MODAppSDK 2.2.0

MODAppSDK 2.2.0

fubin0083 维护。



 
依赖
YYModel>= 0
CocoaSecurity>= 0
 

MODAppSDK 2.2.0

  • 作者:
  • fubin0083

Client-SDK-iOS

iOS DApp 客户端 SDK。支持 MEET.ONE SDK 和 SimpleWallet SDK。

MEET.ONE SDK

功能

  • 获取 EOS 账户:DApp 可以请求 EOS 账户的授权。
  • EOS 转账:DApp 可以发送 EOS 转账。
  • 推送 EOS 交易:DApp 可以推送 EOS 交易。
  • 请求 EOS 定制签名:DApp 可以请求 EOS 定制签名。

SimpleWallet SDK

功能

  • 获取 EOS 账户:DApp 可以请求 EOS 账户的授权。
  • EOS 转账:DApp 可以发送 EOS 转账。

安装

CocoaPods

  1. 在您的Podfile中添加 pod 'MODAppSDK'
  2. 运行 pod installpod update
  3. 导入 <MODAppSDK/MODAppSDK.h>。

MEET.ONE SDK 使用方法

步骤.1 - 注册您的DApp

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // other code
    
    //Create your dapp information
    MODapp *dapp = [MODapp new];
    dapp.name = @"MORE.ONE";
    dapp.icon = @"https://static.ethte.com/more/images/bigicon.png";
    dapp.version = @"1.1.0";
    dapp.dappDescription = @"MORE.ONE is the first airdrop “candy” distribution application focused on EOS.";
    dapp.uuID = @"6e76f5ef-86da-441f-9be8-f7bebef72f9f";
    
    //Register MEET.ONE SDK for your dapp
    [MODAppSDK registerWithDApp:dapp dappScheme:@"MeetOneSDKDemo" redirectURLString:@"https://more.one"];
    
    // other code
    
    return YES;
}

步骤.2 - 处理回调

回调数据(CallbackResp 数据)

@interface MOCallbackResp : NSObject

@property (nonatomic, assign) NSInteger code;                   //0.succes, -1.cancel, != 0 failed
@property (nonatomic, copy) NSString *message;                  //callback message
@property (nonatomic, assign, readonly) MOFunctionType type;    //callback function
@property (nonatomic, copy) NSDictionary *data;                 //data you want

@end

获取回调

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {

    // other code
    
    //Handle MEET.ONE Callback
    BOOL meetoneCallback = [MODAppSDK handleCallbackWithResult:url completionBlock:^(MOCallbackResp *resp, MODapp *meetone) {
        NSInteger code = resp.code;
        NSString *message = resp.message;
        MOFunctionType type = resp.type;
        if (0 == code) { //success
            ;
        }
        NSLog(@"%@", message);  //print message
        switch (type) {
            case MOFunctionTypeNone:
                break;
            case MOFunctionTypeAuthorize:
                break;
            case MOFunctionTypeTransfer:
                break;
            case MOFunctionTypePushTransactions:
                break;
            default:
                break;
        }
    }];
    
    NSLog(@"success:%d", meetoneCallback);
    
    // other code
    
    return YES;
}

步骤3 - 选择功能

1.请求EOS授权

API

/**
 *  Request EOS Authorization
 *
 *  @param description Reason of Requesting
 *  @param completion completion block
 */
+ (void)requestEOSAuthorization:(NSString *)description
              completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

[MODAppSDK requestEOSAuthorization:@"EOS TO THE MOON !!!" completionHandler:^(BOOL success) {
        ;
}];

回调响应数据

  • NSDictionary 账户信息
    • account: 账户名称NSString
    • chainId: 链IDNSString
    • publicKey: 账户公钥NSString
    • permission: 账户权限NSString
    • currencyBalance: 账户EOS余额float
    • signature: 签名String
    • uuid: dapp uuidString
    • ref: 默认值为 "MEET.ONE"String
    • timestamp: 签名时间戳String

2.EOS转账

API

/**
 *  EOS Transfer
 *
 *  @param eosTransfer EOS Transfer
 *  @param completion completion block
 */
+ (void)sendEOSTransferation:(MOEOSTransfer *)eosTransfer
           completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

//Create Transfer
MOEOSTransfer *transfer = [MOEOSTransfer new];
transfer.from = @"wujunchuan12";
transfer.to = @"johntrump123";
transfer.toChainId = @"";
transfer.amount = 1;
transfer.tokenName = @"EOS";
transfer.tokenContract = @"eosio.token";
transfer.tokenPrecision = 4;
transfer.memo = @"Just for Test";
transfer.orderInfo = @"EOS TO THE MOON !!!";
    
//Send
[MODAppSDK sendEOSTransferation:transfer completionHandler:^(BOOL success) {
        ;
}];

回调响应数据

  • NSDictionary 链上返回的数据
    • transaction_id: 交易IDNSString

3.推动EOS交易

API

/**
 *  Push EOS Transactions
 *
 *  @param eosActions Standard EOS Actions
 *  @param completion completion block
 */
+ (void)pushEOSTransactions:(MOEOSTransactions *)eosActions
          completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

//Create Transactions
MOEOSTransactions *transactions = [MOEOSTransactions new];
transactions.from = @"johntrump123";
transactions.chainId = @"";
transactions.actions = @[@{@"account":@"eosio.token",@"name":@"transfer",@"authorization":@[@{@"actor":@"johntrump123",@"permission":@"owner"}],@"data":@{@"from":@"johntrump123",@"to":@"wujunchuan12",@"quantity":@"0.0001 EOS",@"memo":@"sdk test"}}];
transactions.options = @{@"broadcast":@(YES)};
transactions.transactionsInfo = @"EOS TO THE MOON !!!";

//Push
[MODAppSDK pushEOSTransactions:transactions completionHandler:^(BOOL success) {
    ;
}];

回调响应数据

  • NSDictionary 链上返回的数据
    • transaction_id: 交易IDNSString

4.请求EOS自定义签名

API

/**
 *  Request EOS Custom Signature
 *
 *  @param accountName request account name
 *  @param chainId request chain id
 *  @param description Reason of Requesting
 *  @param customData custom signature data
 *  @param completion completion block
 */
+ (void)requestEOSCustomSignature:(NSString *)accountName
                          chainId:(nullable NSString *)chainId
                      description:(NSString *)description
                       customData:(NSString *)customData
                completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

//Request EOS Custom Signature
[MODAppSDK requestEOSCustomSignature:@"johntrump123"
                             chainId:nil
                         description:@"EOS TO THE MOON !!!"
                          customData:@"for test"
                   completionHandler:^(BOOL success) {
        ;
}];

回调响应数据

  • NSDictionary 链上签名数据
    • account: 账户名称NSString
    • chainId: 链IDNSString
    • permission: 账户权限NSString
    • signature: 签名NSString

5.请求EOS账户信息

API

/**
 *  Get EOS Account Info
 *
 *  @param description Reason of Requesting
 *  @param completion completion block
 */
+ (void)requestEOSAccountInfo:(NSString *)description
            completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

[MODAppSDK requestEOSAccountInfo:@"EOS TO THE MOON !!!" completionHandler:^(BOOL success) {
        ;
}];

回调响应数据

  • NSDictionary 账户信息
    • account: 账户名称NSString
    • chainId: 链IDNSString
    • publicKey: 账户公钥NSString
    • permission: 账户权限NSString
    • currencyBalance: 账户EOS余额float

SimpleWallet SDK 使用方法

步骤.1 - 注册您的 DApp

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // other code
    
    //Create your dapp information
    MODapp *dapp = [MODapp new];
    dapp.name = @"MORE.ONE";
    dapp.icon = @"https://static.ethte.com/more/images/bigicon.png";
    dapp.version = @"1.1.0";
    dapp.dappDescription = @"MORE.ONE is the first airdrop “candy” distribution application focused on EOS.";
    dapp.uuID = @"6e76f5ef-86da-441f-9be8-f7bebef72f9f";
    
    //Register SimpleWallet SDK for your dapp
    [MOSimpleWalletSDK registerSDKWithDApp:dapp];
    
    // other code
    
    return YES;
}

步骤.2 - 处理回调

获取回调

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {

    // other code
    
    //Handle SimpleWallet Callback
        BOOL simpleWalletCallback =         [MOSimpleWalletSDK handleCallbackWithResult:url completionBlock:^(MOSimpleWalletCallbackResult result, id res, NSString *callbackURI) {
            NSLog(@"callbackURI:%@, res:%@", callbackURI, res);  //print message
            switch (result) {
                case MOSimpleWalletCallbackResultError:
                    ;
                    break;
                case MOSimpleWalletCallbackResultSuccess:
                    break;
                case MOSimpleWalletCallbackResultFailed:
                    ;
                    break;
                case MOSimpleWalletCallbackResultCancel:
                    ;
                    break;
                default:
                    break;
            }
        }];
    
    // other code
    
    return YES;
}

步骤.3 - 选择功能

1.请求 EOS 授权

API

/**
 *  Request EOS Authorization
 *
 *  @param description Reason of Requesting
 *  @param serverLoginURL dapp's server login API URL
 *  @param callbackURI dapp's callback URI
 *  @param completion completion block
 */
+ (void)requestEOSAuthorization:(NSString *)description
                 serverLoginURL:(NSString *)serverLoginURL
                    callbackURI:(NSString *)callbackURI
              completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

[MOSimpleWalletSDK requestEOSAuthorization:@"SimpleWallet" serverLoginURL:@"https://demo/api/login.php" callbackURI:@"MeetOneSDKDemo://more.one?action=login" completionHandler:^(BOOL success) {
        ;
}];

响应数据

  • NSDictionary 账户信息或 nil

2.EOS 转账

API

/**
 *  EOS Transfer
 *
 *  @param eosTransfer EOS Transfer
 *  @param callbackURI dapp's callback URI
 *  @param completion completion block
 */
+ (void)sendEOSTransferation:(MOEOSTransfer *)eosTransfer
                 callbackURI:(NSString *)callbackURI
           completionHandler:(void (^ __nullable)(BOOL success))completion;

代码示例

//Create Transfer
MOEOSTransfer *transfer = [MOEOSTransfer new];
transfer.to = @"johntrump123";
transfer.amount = 1;
transfer.tokenName = @"EOS";
transfer.tokenContract = @"eosio.token";
transfer.tokenPrecision = 4;
transfer.memo = @"Just for Test";
transfer.orderInfo = @"EOS TO THE MOON !!!";
    
//Send
[MOSimpleWalletSDK sendEOSTransferation:transfer callbackURI:@"MeetOneSDKDemo://more.one?action=transfer" completionHandler:^(BOOL success) {
        ;
}];

响应数据

  • NSDictionary 链上返回的数据
    • txID: NSString 交易ID