SDK接入与初始化

SDK接入与初始化

前言

一键认证方案是运营商利用其移动数据网络,采用“通信网关取号”及 SIM卡识别等技术,准确验证用户本机号码,实现一键认证,并可有效规避短信验证码泄露风险。 通过运营商网关认证能力,用户无需输入手机号码和短信验证码,即可使用手机号一键认证成功。

使用限制说明:一键认证功能的使用前提是用户打开蜂窝网络,目前支持的网络制式有移动 2G、3G、4G,联通 3G、4G、5G,电信 4G、5G。对于双卡手机支,以开启数据流量的 SIM 卡进行认证;对于Wifi环境,在数据网络开通的前提下,会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。 另外,一键认证当前不支持分屏显示,建议此功能不要应用在分屏显示场景下。

  • 本文档仅适用于一键认证3.0.0.0及以上版本;
  • 支持iOS 11.0+;

版本更新说明

3.0.8.0版本更新注意:

  • 由于Xcode15在target<12下会存在Network.framework Crash问题,SDK新增在Info.plist中添加GT_MinimumOSVersion字段,填写当前app的target值。
  • 需要集成GTCommonSDK 3.1.0.0及以上版本。

3.0.0.0以下版本更新注意:

仍旧使用的老版本一键登录接口,请查看以下文档:
已废弃:老版一键登录接口
已废弃:状态码汇总
已废弃:本机号码校验

1.创建应用

1.1 打开项目工程

启动 Xcode, 打开您之前创建的 Xcode 项目工程

1.2 添加应用信息

接入方需要提供 App 的相关信息用于鉴权。

1.2.1 提供应用的 BundleId

选择应用的 Target -> General -> Bundle Identifier

1.2.2 在开发者中心添加一键认证应用

在开发者中心提交BundleId等信息后即可获取APPID等参数。

2. CocoaPods 集成(推荐)

2.1 准备Podfile

使用时需要新建一个名为 Podfile 的文件,如下格式,将依赖的库名字依次列在文件中即可:

target 'YourTargetName' do
    platform :ios, "8.0"
    pod 'GYSDK'
end

将编辑好的 Podfile 文件放到你的项目根目录中,执行如下命令即可:

$ cd "<path/to/project>"
$ pod install

注意事项:

(1) 在 App 内投放广告,获取 IDFA 可通过苹果审核。

(2) App 内无广告,但由于先前投放的特定广告,可参考如下勾选,通过苹果审核。

勾选如图:

3. 手动集成

3.1 一键认证iOS SDK资料包结构

GYSDK_IOS_SDK/
  |- SdkLib/
  |    |- GeYanSdk.framework
  |    |- GTCommonSDK.xcframework
  |    |- TYRZResource.bundle
  | - GyDemo
  • GeYanSdk.framework:标准版一键认证SDK,包含集成所需的静态库和头文件,支持i386x86_64arm64armv7,因此同时支持simulatordevice设备。
  • GTCommonSDK.xcframework: 个推基础库。
  • GyDemo:Objective-C手动集成演示Demo工程。
3.2 一键认证 SDK framework 库设置

将 SdkLib 目录拷贝到项目工程目录下,导入 SdkLib 目录下的 GeYanSdk.framework 文件。

3.3. 添加依赖库 (必须,如下图)

添加系统库支持:

  • libz.tbd
  • libc++.tbd
  • libresolv.9.tbd
  • libsqlite3.0.tbd
  • WebKit.framework
  • AdSupport.framework
  • CoreFoundation.framework
  • Network.framework
  • GTCommonSDK.xcframework

3.4. 设置 Other Linker Flags

找到主工程的 target -> Build Setting -> Linking -> Other Linker Flags,将其设置为 -ObjC(如图所示):

4. 授权页规范

为了确保用户在登录过程中将手机号码信息授权给开发者使用的知情权,一键登录需要开发者提供授权页登录页面供用户授权确认。开发者必须弹出授权页,明确告知用户当前操作会将用户的本机号码信息传递给应用。

授权页示例如下:

注意:
1、页面必要元素有:号码栏(pnLabel),品牌露出(sloganLabel),登录按钮(loginBtn),隐私确认(checkboxBtn),隐私标题(termLabel);
2、开发者不得通过任何技术手段,破解授权页,或将上述授权页面的必要元素内容隐藏、覆盖、或者动态变更;
2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权;
3、对于接入GYSDK并上线的应用,我方和运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。

5. 运行Demo

下载demo,修改BundleId,更换AppDelegate.m中的APPID,运行Demo。

5.1 初始化SDK

AppDelegate didFinishLaunchingWithOptions中初始化一键认证SDK。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //超时设置,建议为8s以上,至少5s以上;
    [GeYanSdk setPreLoginTimeout:10]; //预登录超时时长
    [GeYanSdk setEloginTimeout:10];   //登录超时时长

    //初始化
    [GeYanSdk startWithAppId:APPID
                withCallback:^(BOOL isSuccess, NSError *error, NSString *gtcid) {
        NSLog(@"GeYanSdk startWithAppId gtcid:%@", gtcid);
    }];

    //提前进行预登录,以便节省后续用户的等待时间;
    [GeYanSdk preGetToken:^(NSDictionary *preDic) {
      NSLog(@"preGetToken:%@", preDic);
    }];
    return YES;
}

5.2 一键登录

需要一键登录的时候,先判断预登录:

if ([GeYanSdk isPreGettedTokenValidate]) {
        //预登录有效,启动登录授权页

        //渲染页面信息, 如pnLabel、sloganLabel、loginBtn、checkboxBtn、termLabel
     以上控件必须保持页面内可见,不可遮挡、隐藏、曲解意义等操作。
        [self renderView];

        // 拉起授权页
        [GeYanSdk oneTapLogin:self
                    viewModel:viewModel
                  contentView:self.contentView
                  subViewList:list
                   loginBlock:^(NSDictionary * _Nullable dic) {
            //登录完成回调
            NSLog(@"%@", dic);
        }];
        return;
    }

    //预登录
    [GeYanSdk preGetToken:^(NSDictionary *preDic) {
        NSLog(@"preGetToken: %@ %@", preDic, preDic[@"msg"]);

        if (![GeYanSdk isPreGettedTokenValidate]) {
            [CommonToastHUD hideAllAndTip:[Utils dic2Str:preDic]];
            return;
        }

        //渲染页面信息
        [weakSelf renderView];
        [GeYanSdk oneTapLogin:self
                    viewModel:viewModel
                  contentView:self.contentView
                  subViewList:list
                   loginBlock:^(NSDictionary * _Nullable dic) {
            //登录完成回调
            NSLog(@"%@", dic);
        }];
    }];

预登录成功后,使用预取号信息渲染授权页面,开发者可以根据需求自定义授权页UI。

- (void)renderView {
    GyContentModel *model = [GyContentModel currentModel];//预取号缓存信息
    self.pnLabel.text = model.pn;
    self.sloganLabel.text = model.slogan;
    self.termLabel.text = model.term;
    [self updateCheckBoxState];

    // 隐私条款
    NSString *termText = [NSString stringWithFormat:@"登录即同意%@并使用本机号码登录", model.term];
    self.termLabel.text = termText;

    NSRange range = [termText rangeOfString:model.term];
    if (range.location != NSNotFound) {
        [self.termLabel addLinkToURL:[[NSURL alloc] initWithString:[NSString stringWithFormat:@"%@", model.link]] withRange:range];
    }
    [self.termLabel sizeToFit];
}

注意:
1、页面必要元素有:号码栏(pnLabel),品牌露出(sloganLabel),登录按钮(loginBtn),隐私确认(checkboxBtn),隐私标题(termLabel);
2、开发者不得通过任何技术手段,破解授权页,或将上述授权页面的必要元素内容隐藏、覆盖、或者动态变更;
2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权;
3、对于接入GYSDK并上线的应用,我方和运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。

6. 隐私文件和SDK签名

一键认证SDK 3.0.8.0开始支持隐私文件和SDK签名。GTCommonSDK 3.1.0.0开始支持隐私文件和SDK签名。
下载SDK,解压后查看PrivacyInfo.xcprivacy文件。

GETUI_IOS_SDK/
  |- Lib/
  |- SdkLib/ 
  |   |- GeYanSDK.xcframework
  |   |    |- ios-对应cpu架构
  |   |    |   |- GeYanSDK.framework
  |   |    |   |   |- PrivacyInfo.xcprivacy
  |   |- GTCommonSDK.xcframework
  |   |    |- ios-对应cpu架构
  |   |    |   |- GTCommonSDK.framework
  |   |    |   |   |- PrivacyInfo.xcprivacy

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询