# iOS

### Introduction

GitHub: [***TP iOS SDK***](https://github.com/TP-Lab/Mobile-SDK/tree/master/iOS%20SDK)

*MiniWallet* only supports the EOS network. Via MiniWallet, user can do some special  actions without pulling up TokenPocket. This way can provide a better user experience.

### Initialization

**Initialize in** *`AppDelegate.m`* , **in method** *`-application:didFinishLaunchingWithOptions:`*

```
[TPApi registerAppID:@"tpsdk"];
[TPApi setSeed:@"xxxx" error:nil];
[TPApi setBlockChain:TPBlockChainTypeEOSMainNet nodeUrl:@"http://eosinfo.mytokenpocket.vip" plugNodeUrl:@"http://eosinfo.mytokenpocket.vip"];
```

### Auth

```
TPAuthObj *auth = [TPAuthObj new];
auth.dappName = @"xxx";
auth.dappIcon = @"https:.../xx.png";
auth.account = "xxxx";
auth.perm = "xxxx";
auth.selectAll = NO;
auth.actions = [linkActions];
[TPApi sendObj:auth resultHandle:^(TPReqType type,NSError *error) {
    // ...        
}];


/// Response ↓
TPRespObj.data
{
    ...,
    "ref" : "TokenPocket",
    "publickey" : "EOS5AvWThdghtNngWP4UcNi9DL6kF7Mnv2ccO",
    "sign" : "SIG_K1_JyCJtV9vqwxtyEt68UhUibkg1CmRjxtG6zkZwE...",
    "timestamp" : "1554266633",
}
```

### PushTransaction

* Build the data and replace the *`permission`* field value in the field *`action`* in action with the *`perm`* field passed by calling *`auth`*.&#x20;
* Call *`TPApi perm:(NSString *)perm isLinkActions:(NSArray<TPLinkAction *> *)actions account:(NSString *)account completion:(void (^)(BOOL permExisted,BOOL linked,NSError *error))completion`* check action binding fixed state.&#x20;
* If the second step binds successfully, call *`Auth`* directly.&#x20;
* If the binding fails in the second step, the developer needs to replace the *`permission`* field with *`active`* or *`owner`* in order to pull up the wallet to perform the operation.

### Method

#### **Modify the** *`seed`*

```
+ (void)resetSeed:(NSString *)seed newSeed:(NSString *)newSeed error:(NSError **)error;
```

#### Get the information *of* authorized account

```
+ (NSArray<NSString *> *)getAccounts;
```

#### Check if permission exists

```
+ (void)isPermExist:(NSString *)perm account:(NSString *)account completion:(void (^)(BOOL exist,NSError *error))completion;
```

#### Check if the permission **has been** linked to the *`action`*

```
+ (void)perm:(NSString *)perm isLinkActions:(NSArray<TPLinkAction *> *)actions account:(NSString *)account completion:(void (^)(BOOL permExisted,BOOL linked,NSError *error))completion;
```

#### Clear local authorization

```
+ (BOOL)clearAuth:(NSString *)account;
```
