一键认证方案是运营商利用其移动数据网络,采用“通信网关取号”及 SIM卡识别等技术,准确验证用户本机号码,实现一键认证,并可有效规避短信验证码泄露风险。 通过运营商网关认证能力,用户无需输入手机号码和短信验证码,即可使用手机号一键认证成功。
使用限制说明:一键认证功能的使用前提是用户打开蜂窝网络,目前支持的网络制式有移动 2G、3G、4G,联通 3G、4G、5G,电信 4G、5G。对于双卡手机支,以开启数据流量的 SIM 卡进行认证;对于Wifi环境,在数据网络开通的前提下,会强制使用数据网络触发网关请求,请求仅为几K,可正常校验。 另外,一键认证当前不支持分屏显示,建议此功能不要应用在分屏显示场景下。
使用Xcode15的开发者请注意:
由于Xcode15在target<12下会存在Network.framework Crash问题。
解决方案一:用户需要升级使用GTCommonSDK 3.1.0.0+, SDK新增在Info.plist中添加GT_MinimumOSVersion字段,填写当前app的target值。对应的通知扩展的Info.plist也需要同样的修改。
解决方案二:修改target>=12。 苹果官网明确Xcode15最低支持iOS12+。
仍旧使用的老版本一键登录接口,请查看以下文档:
已废弃:老版一键登录接口
已废弃:状态码汇总
已废弃:本机号码校验
启动 Xcode, 打开您之前创建的 Xcode 项目工程
接入方需要提供 App 的相关信息用于鉴权。
选择应用的 Target -> General -> Bundle Identifier
在开发者中心提交BundleId等信息后即可获取APPID等参数。
使用时需要新建一个名为 Podfile 的文件,如下格式,将依赖的库名字依次列在文件中即可:
target 'YourTargetName' do
platform :ios, "8.0"
pod 'GYSDK'
end
将编辑好的 Podfile 文件放到你的项目根目录中,执行如下命令即可:
$ cd "<path/to/project>"
$ pod install
注意事项:
(1) 在 App 内投放广告,获取 IDFA 可通过苹果审核。
(2) App 内无广告,但由于先前投放的特定广告,可参考如下勾选,通过苹果审核。
勾选如图:
GYSDK_IOS_SDK/
|- SdkLib/
| |- GeYanSdk.framework
| |- GTCommonSDK.xcframework
| |- TYRZResource.bundle
| - GyDemo
i386
、x86_64
、arm64
、armv7
,因此同时支持simulator
和device
设备。将 SdkLib 目录拷贝到项目工程目录下,导入 SdkLib 目录下的 GeYanSdk.framework 文件。
添加系统库支持:
找到主工程的 target -> Build Setting -> Linking -> Other Linker Flags,将其设置为 -ObjC
(如图所示):
为了确保用户在登录过程中将手机号码信息授权给开发者使用的知情权,一键登录需要开发者提供授权页登录页面供用户授权确认。开发者必须弹出授权页,明确告知用户当前操作会将用户的本机号码信息传递给应用。
授权页示例如下:
注意:
1、页面必要元素有:号码栏(pnLabel),品牌露出(sloganLabel),登录按钮(loginBtn),隐私确认(checkboxBtn),隐私标题(termLabel);
2、开发者不得通过任何技术手段,破解授权页,或将上述授权页面的必要元素内容隐藏、覆盖、或者动态变更;
2、登录按钮文字描述必须包含“登录”或“注册”等文字,不得诱导用户授权;
3、对于接入GYSDK并上线的应用,我方和运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。
下载demo,修改BundleId,更换AppDelegate.m中的APPID
,运行Demo。
在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;
}
需要一键登录的时候,先判断预登录:
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并上线的应用,我方和运营商会对上线的应用授权页面做审查,如果有出现未按要求弹出或设计授权页面的,将关闭应用的认证取号服务。
一键认证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
以上文档对您是否有帮助?