iOS客户端Demo体验

更新时间:
复制为 MD 格式

本文为您介绍短信认证功能Demo的运行步骤及示例代码,帮助您快速了解短信认证功能iOS客户端SDK集成的详细接入步骤及用法,请参见短信认证iOS客户端接入

步骤一:下载SDK

登录号码认证产品控制台,在概览页面右侧API&SDK区域,单击立即下载,进入API&SDK页面,根据页面提示下载并解压对应SDK。

步骤二:替换方案号

请在短信认证方案管理页面创建认证方案。SDK解压后获取Demo,找到ViewController.m文件,请将<#SceneCode#>替换为您的方案号。

#import "ViewController.h"
#import "NavigationView.h"
#import "WPxxxxxxxxx.h"
#import <xxxxxxxSecurityCodeManager.h>
@interface ViewController () <NavigationViewDelegate, xxxxxxxxDelegate>
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) NavigationView *navigationView;
@property (nonatomic, strong) xxxxxxSecurityCodeManager *securityCodeManager;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self initViews];
    [self setLayoutSubviews];
    self.securityCodeManager = [[SecurityCodeManager alloc] initWithSceneCode:@"xxx"];
    [self.securityCodeManager setXxxxUpdateDelegate:self];
}

步骤三:设置参数

找到ViewController.m,将updateTokenWithVerifyCodeManager:回调方法的参数设置为您的信息。如:<#AccessKeyId#><#AccessKeySecret#><#sts token#><#biz token#><#expired time mills#>等。

@implementation ViewController
// ...
/*
    [HttpRequestUtils requestTokensWithParameters:请求参数
                                         complete:^(id response) {
        tokens.accessKeyId = AccessKeyId;
        tokens.accessKeySecret = AccessKeySecret;
        tokens.stsToken = sts token;
        tokens.bizToken = biz token;
        tokens.expiredTimeMills = expired time mills;
        dispatch_semaphore_signal(semaphore);
    }];
    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
    return tokens;
*/
    SmsTokens *tokens = [[SmsTokens alloc] init];
    tokens.accessKeyId = @"xx";
    tokens.accessKeySecret = @"xx";
    tokens.stsToken = @"xx";
    tokens.bizToken = @"xx";
    tokens.expiredTimeMills = 123;
    return tokens;
}

示例代码

初始化示例对象

 self.verifyCodeManager = [[SmsVerifyCodeManager alloc] initWithSceneCode:@"xxx"];

设置代理

[self.verifyCodeManager setTokenUpdateDelegate:self];

监听回调

- (SmsTokens *)updateTokenWithVerifyCodeManager:(SmsVerifyCodeManager *)verifyCodeManager {
    /**
     注:这里需要发送网络请求从服务端获取相关参数,但是该方法需要同步返回结果,所以需要自己用信号量做下同步
        这里属于私有线程,所有放心做同步,不会卡顿主线程
     示例:
     SmsTokens *tokens = [[SmsTokens alloc] init];
     dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
     [HttpRequestUtils requestTokensWithParameters:<#请求参数#>
                                          complete:^(id response) {
         tokens.accessKeyId = <#AccessKeyId#>;
         tokens.accessKeySecret = <#AccessKeySecret#>;
         tokens.stsToken = <#sts token#>;
         tokens.bizToken = <#biz token#>;
         tokens.expiredTimeMills = <#expired time mills#>;
         dispatch_semaphore_signal(semaphore);
     }];
     dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
     return tokens;
     */
    SmsTokens *tokens = [[SmsTokens alloc] init];
    tokens.accessKeyId = @"xx";
    tokens.accessKeySecret = @"xx";
    tokens.stsToken = @"xx";
    tokens.bizToken = @"xx";
    tokens.expiredTimeMills = 123;
    return tokens;
}
      

获取Token

[self.verifyCodeManager sendVerifyCodeWithTimeout:10.0
                                          countryCode:86
                                          phoneNumber:phoneNumber
                                             complete:^(SmsSendCodeResult * _Nonnull result) {
        [ws.loginView stopGetCodeCountdown];
        NSLog(@"requestId = %@, code = %@, msg = %@, smsVerifyToken = %@, failedResponseData = %@", result.requestId, result.code, result.msg, result.smsVerifyToken, result.failedResponseData);
    }];