梦网统一认证SDK(iOS)接口文档
1.初始化SDK
接口说明
- (void)initWithAppId:(NSNumber *)appId appKey:(NSString*_Nonnull)appKey;
本方法用于发起初始化一键免密登录(或本机号码校验)能力,SDK完成网络请求并根据运营商类型自动选择配置信息。应用使用SDK功能时首先调用该方法。
接口参数
参数 |
类型 |
说明 |
appId |
int |
应用注册的梦网id |
appkey |
String |
应用注册的appkey |
2.一键登录预取号
接口说明
- (void)getAccessCodeFinishBlock:(MWReturnBlock _Nonnull )complete;
预取号码信息,获取AccessCode。建议在APP登录页初始化时调用,提高后续授权页的打开速度。不要在APP启动初始化时调用,避免接口调用资源浪费。
接口参数
参数 |
类型 |
说明 |
complete |
MWReturnBlock |
一键登录预取号结果的回调 |
3.一键登录唤起授权页并获取token
接口说明
- (void)authLoginWithBlock:(MWReturnBlock _Nonnull )complete;
唤起一键登录授权页,在用户授权后获取一键登录的token。为了提高安全性,本SDK不直接提供获取手机号明文的功能。应用服务端可以使用此token访问梦网服务端接口,获取具体的手机号码信息。
接口参数
参数 |
类型 |
说明 |
complete |
MWReturnBlock |
一键登录获取一键登录的token |
4.获取本机号码校验token
接口说明
- (void)requestPhoneTokenWithBlock:(MWReturnBlock _Nonnull)complete;
返回token,用于手机号码校验。为了提高安全性,本SDK不直接提供号码校验功能,应用服务端可以使用此token和待校验的手机号码访问梦网服务端接口,确定待校验号码是否为本机号码。
接口参数
参数 |
类型 |
说明 |
complete |
MWReturnBlock |
获取本机号码校验token的回调 |
5.授权页UI个性化定制
接口说明
[[MWUniLoginSDK shareInstance] setAuthViewModel:self.authViewModel];
根据应用UI风格可以个性化定制授权页UI显示效果,以保持应用统一的风格。
接口参数
参数 |
类型 |
说明 |
AuthViewModel |
UACustomModel |
主题配置Model,通过配置里面的参数来自定义授权界面 |
AuthViewModel配置参数说明
5.1.导航栏
方法 |
参数类型 |
说明 |
authViewBlock |
Block |
在authViewBlock返回的customView中添加自定义导航栏视图 |
webNavColor |
UIColor |
web协议界面导航标题栏颜色 |
webNavTitleAttrs |
NSDictionary |
web协议界面导航标题字体属性设置 默认值:@{NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont systemFontOfSize:16]} |
-
authViewBlock示例
__weak typeof(self) weakSelf = self;
//自定义视图在这里面添加到customView上
_authViewModel.authViewBlock = ^(UIView *customView, CGRect numberFrame, CGRect loginBtnFrame, CGRect checkBoxFrame, CGRect privacyFrame) {
__strong typeof(weakSelf) strongSelf = weakSelf;
[strongSelf addSubviewsIntoCustomView:customView withNumberFrame:numberFrame loginBtnFrame:loginBtnFrame checkBoxFrame:checkBoxFrame privacyFrame:privacyFrame];
};
//给授权界面添加自定义UI
- (void)addSubviewsIntoCustomView:(UIView *)customView withNumberFrame:(CGRect)numberFrame loginBtnFrame:(CGRect)loginBtnFrame checkBoxFrame:(CGRect)checkBoxFrame privacyFrame:(CGRect)privacyFrame
{
CGFloat top = Height_StatusBar;
CGFloat height = Height_NavBar;
if (_authViewModel.authWindow) {
top = 0;
height = 44;
}
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeSystem];
backButton.frame = CGRectMake(10, top, 40, 40);
backButton.tintColor = [UIColor whiteColor];
[backButton setImage:[UIImage imageNamed:@"titlebar_icon_back"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonAction) forControlEvents:UIControlEventTouchUpInside];
UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, customView.frame.size.width, height)];
navView.backgroundColor = ThemeColor;
[customView addSubview:navView];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, top, customView.frame.size.width, 44)];
titleLabel.font = [UIFont systemFontOfSize:17];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.text = @"一键登录";
[navView addSubview:titleLabel];
[navView addSubview:backButton];
}
5.2.号码栏
方法 |
参数类型 |
说明 |
numberOffsetX |
NSNumber |
号码栏X偏移量 |
setNumFieldOffsetY |
NSNumber |
号码栏Y偏移量 |
setNumFieldOffsetY_B |
NSNumber |
号码栏Y偏移量(基于底部) |
5.3.登录按钮
方法 |
参数类型 |
说明 |
logBtnText |
NSAttributedString |
设置登录按钮富文本内容 |
logBtnHeight |
CGFloat |
登录按钮高 注意:必须大于40 |
logBtnOffsetY |
NSNumber |
登录按钮Y偏移量 |
logBtnOffsetY_B |
NSNumber |
登录按钮高距离底部的高度 |
logBtnOriginLR |
NSArray |
登录按钮的左右边距 示例:@[@50,@70] 只能两个元素 |
logBtnImgs |
NSArray |
登录按钮背景图片添加到数组(顺序如下)@[激活状态的图片,失效状态的图片,高亮状态的图片] |
5.4.隐私栏
方法 |
参数类型 |
说明 |
uncheckedImg |
UIImage |
复选框未选中时图片 |
checkedImg |
UIImage |
复选框选中时图片 |
checkboxWH |
NSNumber |
复选框大小(只能正方形)必须大于12 |
appPrivacyOriginLR |
NSArray |
隐私条款(包括check框)的左右边距 |
appPrivacyDemo |
NSAttributedString |
隐私的内容模板:1、全句可自定义但必须保留"&&默认&&"字段表明SDK默认协议,否则设置不生效 2、协议1和协议2的名称要与数组 str1 和 str2 ... 里的名称 一样3、必设置项(参考SDK的demo) appPrivacieDemo设置内容:登录并同意&&默认&&和&&百度协议&&、&&京东协议2&&登录并支持一键登录 展示: 登录并同意中国移动条款协议和百度协议1、京东协议2登录并支持一键登录 |
appPrivacy |
NSArray |
隐私条款:数组(务必按顺序)要设置NSLinkAttributeName属性可以跳转协议 |
privacySymbol |
BOOL |
隐私条款默认协议是否开启书名号 |
privacyState |
BOOL |
隐私条款check框默认状态 默认:NO |
privacyColor |
string |
设置隐私栏复选框选中时图片 |
setPrivacyOffsetY |
NSNumber |
设置隐私栏相对于标题栏下边缘的y偏移 |
setPrivacyOffsetY_B |
NSNumber |
设置隐私栏相对于屏幕底部的y偏移 |
5.5.自定义布局
方法 |
参数类型 |
说明 |
authPageBackgroundImage |
UIImage |
授权界面背景图片 |
5.6.转场动画
方法 |
参数类型 |
说明 |
presentType |
UAPresentationDirection |
授权界面推出时的方向,此属性当authWindow为NO时设置才有效 UAPresentationDirectionBottom = 0, //底部 present默认效果 UAPresentationDirectionRight, //右边 导航栏效果 UAPresentationDirectionTop, //上面 UAPresentationDirectionLeft //左边 |
5.7.弹窗模式
方法 |
参数类型 |
说明 |
authWindow |
BOOL |
弹窗模式开关 |
modalTransitionStyle |
UIModalTransitionStyle |
弹窗模式推出动画 只咋在弹窗模式下生效UIModalTransitionStyleCoverVertical, 下推 UIModalTransitionStyleFlipHorizontal,翻转 UIModalTransitionStyleCrossDissolve, 淡出 |
6.退出授权页界面
在authViewBlock返回的customView里添加Button并绑定点击事件
- (void)addSubviewsIntoCustomView:(UIView *)customView withNumberFrame:(CGRect)numberFrame loginBtnFrame:(CGRect)loginBtnFrame checkBoxFrame:(CGRect)checkBoxFrame privacyFrame:(CGRect)privacyFrame
{
CGFloat top = Height_StatusBar;
CGFloat height = Height_NavBar;
if (_authViewModel.authWindow) {
top = 0;
height = 44;
}
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeSystem];
backButton.frame = CGRectMake(10, top, 40, 40);
backButton.tintColor = [UIColor whiteColor];
[backButton setImage:[UIImage imageNamed:@"titlebar_icon_back"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonAction) forControlEvents:UIControlEventTouchUpInside];
UIView *navView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, customView.frame.size.width, height)];
navView.backgroundColor = ThemeColor;
[customView addSubview:navView];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, top, customView.frame.size.width, 44)];
titleLabel.font = [UIFont systemFontOfSize:17];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.text = @"一键登录";
[navView addSubview:titleLabel];
[navView addSubview:backButton];
}
- (void)backButtonAction {
NSNumber *type = [[MWUniLoginSDK shareInstance] getOperatorType];
//移动卡直接退出
if ([type intValue] == 1) {
[self dismissViewControllerAnimated:YES completion:nil];
} else {
//联通、电信卡则发送以下通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"authViewDisMissKey" object:nil];
}
}
SDK一键登录完成回调后,不会立即关闭授权页面,需要开发者主动调用此方法去完成页面的关闭。授权页的退出完全由APP控制,注意需要在主线程调用此函数。
7.获取当前SIM卡的运营商
接口说明
- (NSNumber*_Nonnull)getOperatorType;
返回值
参数 |
类型 |
说明 |
函数返回值 |
NSNumber |
NSNumber |
运营商类型 @return 运营商类型 1移动,2联通,3电信 |