-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathindex.js
274 lines (256 loc) · 13 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
import {
DeviceEventEmitter,
NativeModules,
Platform,
} from 'react-native';
const JVerificationModule = NativeModules.JVerificationModule;
const listeners = {};
const LoginEvent = 'LoginEvent'; //登录事件
const UnCheckBox = 'UncheckBoxCallBack'; //iOS 未选中隐私协议CheckBox,点击登录按钮的回调事件
export default class JVerification {
/*
* 设置调试模式,默认关闭状态
* 该接口需在 init 接口之前调用,避免出现部分日志没打印的情况
* @param enable = boolean
* */
static setLoggerEnable(enable) {
if (Platform.OS == 'android') {
JVerificationModule.setDebugMode(enable);
} else {
JVerificationModule.setDebug(enable);
}
}
/*
* SDK初始化
* @param params = {'time':int,'appkey':String,'channel':String,'advertisingId':String,'isProduction':boolean}
* @param callback = (result) => {"code":int,'content':String}
*
* time:初始化超时时间,单位毫秒,合法范围是(0,30000],推荐设置为5000-10000,默认值为10000
* appkey:极光系统应用唯一标识,必填 (仅ios)
* channel:应用发布渠道,可选 (仅ios)
* advertisingId:广告标识符,可选 (仅ios)
* isProduction:是否生产环境。如果为开发状态,设置为false;如果为生产状态,应改为true。默认为false,可选 (仅ios)
* */
static init(params, callback) {
if (Platform.OS == 'android') {
JVerificationModule.init(params, callback);
} else {
JVerificationModule.setupWithConfig(params, callback);
}
}
/*
* 获取sdk初始化是否成功标识
* @param callback = (result) => {"enable":boolean}
* */
static isInitSuccess(callback) {
if (Platform.OS == 'android') {
JVerificationModule.isInitSuccess(callback);
} else {
JVerificationModule.isSetupClient(callback);
}
}
/*
* SDK判断网络环境是否支持
* @param callback = (result) => {"enable":boolean}
* */
static checkLoginEnable(callback) {
if (Platform.OS == 'android') {
JVerificationModule.checkVerifyEnable(callback);
} else {
JVerificationModule.checkVerifyEnable(callback);
}
}
/*
* SDK获取号码认证token
* @param time : int
* @param callback = (result) => {"code":int,'content':String,'operator':String}
*
* time:超时时间(毫秒),有效取值范围(0,10000],若小于等于0则取默认值5000.大于10000则取10000.为保证获取token的成功率,建议设置为3000-5000ms.
* code:返回码,2000代表获取成功,其他为失败,详见错误码描述
* content:成功时为token,可用于调用验证手机号接口。token有效期为1分钟,超过时效需要重新获取才能使用。失败时为失败信息
* operator:成功时为对应运营商,CM代表中国移动,CU代表中国联通,CT代表中国电信。失败时可能为null
* */
static getToken(time, callback) {
JVerificationModule.getToken(time, callback);
}
/*
* SDK获取预取号token
* @param time : int
* @param callback = (result) => {"code":int,'content':String}
*
* time:超时时间(毫秒),有效取值范围(0,10000],若小于等于0则取默认值5000.大于10000则取10000, 为保证预取号的成功率,建议设置为3000-5000ms
* code:返回码,7000代表获取成功,其他为失败,详见错误码描述
* content:调用结果信息描述
* */
static preLogin(time, callback) {
JVerificationModule.preLogin(time, callback);
}
/*
* SDK清除预取号缓存
* */
static clearPreLoginCache() {
JVerificationModule.clearPreLoginCache();
}
/*
* SDK请求授权一键登录
* @param enable : boolean
*
* boolean:是否自动关闭授权页,true - 是,false - 否;若此字段设置为false,请在收到一键登录回调后调用SDK提供的关闭授权页面方法
* */
static login(enable) {
if (Platform.OS == 'android') {
JVerificationModule.loginAuth(enable);
} else {
JVerificationModule.getAuthorizationWithController(enable);
}
}
/*
* SDK关闭授权页面
* */
static dismissLoginPage() {
if (Platform.OS == 'android') {
JVerificationModule.dismissLoginAuthActivity();
}
else {
JVerificationModule.dismissLoginController();
}
}
/**
* 设置一键登录页面样式
* 均可选,需要在login前调用生效(ios需要将图片放入JVerificationResource.bundle)
* var customConfigParams = {
* backgroundImage: String //背景图
*
* statusBarHidden: boolean //状态栏是否隐藏
* statusBarMode: String //状态栏模式 light,dark
*
* navHidden: boolean //导航栏是否隐藏
* navColor: int //导航栏颜色
*
* navTitle: string //导航栏标题
* navTitleSize: int //导航栏标题文字字体大小(单位:sp)
* navTitleColor: number //导航栏标题文字颜色
*
* navReturnHidden: boolean //导航栏返回按钮是否隐藏
* navReturnImage: string //导航栏左侧返回按钮图标
* navReturnX: int //导航栏返回按钮距屏幕左侧偏移 (仅Android)
* navReturnY: int //导航栏返回按钮距屏幕右侧偏移 (仅Android)
* navReturnW: int //导航栏返回按钮宽度 (仅Android)
* navReturnH: int //导航栏返回按钮高度 (仅Android)
*
* logoHidden: boolean //logo是否隐藏
* logoImage: string //logo(android默认为应用图标;ios默认无)
* logoX: int //logo相对于屏幕左边x轴偏移
* logoY: int //logo相对于标题栏下边缘y偏移
* logoW: int //logo宽
* logoH: int //logo高
*
* numberSize: int //手机号码字体大小(单位:sp)
* numberColor: int //手机号码字体颜色
* numberX: int //号码栏相对于屏幕左边x轴偏移
* numberY: int //号码栏相对于标题栏下边缘y偏移
* numberW: int //号码栏宽度
* numberH: int //号码栏高度
*
* sloganHidden: boolean //slogan是否隐藏
* sloganTextSize: int //slogan字体大小
* sloganTextColor: int //slogan文字颜色
* sloganX: int //slogan相对于屏幕左边x轴偏移
* sloganY: int //slogan相对于标题栏下边缘y偏移
* sloganW: int, //slogan宽度 (仅iOS)
* sloganH: int, //slogan高度 (仅iOS)
*
* loginBtnText: string, //登录按钮文字
* loginBtnTextSize: int //登录按钮字体大小
* loginBtnTextColor: int //登录按钮文字颜色
*
* loginBtnImage: string //登录按钮selector选择样式 (仅android)
* loginBtnNormalImage: string //登录按钮正常图片 (仅ios,三个同时设置生效)
* loginBtnDisabledImage: string //登录按钮失效图片 (仅ios,三个同时设置生效)
* loginBtnSelectedImage: string //登录按钮按下图片 (仅ios,三个同时设置生效)
* loginBtnX: int //登录按钮相对于屏幕左边x轴偏移
* loginBtnY: int //登录按钮相对于标题栏下边缘y偏移
* loginBtnW: int //登录按钮宽度
* loginBtnH: int //登录按钮高度
*
* privacyOne: StringArray //[隐私条款一名称,隐私条款一链接]
* privacyTwo: StringArray //[隐私条款二名称,隐私条款二链接]
* privacyColor: intArray //[隐私条款名称颜色,隐私条款链接颜色]
* privacyText: StringArray //[隐私条款名称外的文字,隐私条款名称外的文字,隐私条款名称外的文字,隐私条款名称外的文字]
* privacyTextSize: int //隐私条款文字字体大小
* privacyTextGravityMode: String //隐私条款文本对齐方式,目前仅支持 left、center
* privacyBookSymbolEnable: boolean //隐私条款运营商协议名是否加书名号
* privacyX:int //隐私条款相对于屏幕左边x轴偏移
* privacyY:int //隐私条款相对于导航栏下边缘y偏移
* privacyW:int //隐私条款宽度
* privacyH:int //隐私条款高度
*
* privacyCheckboxHidden: boolean //隐私条款checkbox是否隐藏
* privacyCheckEnable: boolean //隐私条款默认选中状态。默认不选中
* privacyCheckedImage: string //隐私条款复选框选中图片
* privacyUncheckedImage: string //隐私条款复选框未选中图片
* privacyCheckboxSize:int //设置隐私条款checkbox尺寸 默认是10
*
* privacyWebNavColor: int //协议展示web页面导航栏背景颜色
* privacyWebNavTitle:String //协议页导航栏标题(仅iOS)
* privacyWebNavTitleSize: int //协议展示web页面导航栏标题文字大小
* privacyWebNavTitleColor: int //协议展示web页面导航栏标题文字颜色
* privacyWebNavReturnImage: String //协议展示web页面导航栏返回按钮图标
* }
*
* var customViewParams = {
* 'customViewName':String, //在index.js中注册的component
* 'customViewPoint':StringArray //[int,int,int,int] 基于屏幕左上角的x,y,w,h
* }
*
* 关于图片资源,Android请将图片放到res/drawable目录下,iOS请将图片放到JVerificationResour.bundle
* 关于颜色,为colorInt,可在Android代码中直观的看到数值,例如Color.BLACK = -16777216,Color.WHITE = -1
* 关于x,y,w,h,为保障显示效果,请同时设置。
*/
static addLoginCustomConfig(customConfigParams, customViewParams) {
if (Platform.OS == 'android') {
JVerificationModule.setCustomUIWithConfig(customConfigParams, customViewParams);
} else {
JVerificationModule.customUIWithConfig(customConfigParams, customViewParams);
}
}
/*
* 登录事件监听
* @param callback = result => {'code':int,'content':String,'operator':String}
* */
static addLoginEventListener(callback) {
listeners[callback] = DeviceEventEmitter.addListener(
LoginEvent, result => {
callback(result);
});
}
static addUncheckBoxEventListener(callback) {
listeners[callback] = DeviceEventEmitter.addListener(
UnCheckBox, result => {
callback(result);
});
}
//移除事件
static removeListener(callback) {
if (!listeners[callback]) {
return;
}
listeners[callback].remove();
listeners[callback] = null;
}
/*
* SDK获取验证码
* @param params = {'phonenum':String,'signid':String,'tempid':String}
* @param callback = (result) => {"code":int,'msg':String}
* */
static getVerifyCode(params,callback) {
JVerificationModule.getSmsCode(params,callback);
}
/*
* 设置前后两次获取验证码的时间间隔
* @param time : int
* */
static setCodeTime(time) {
JVerificationModule.setTimeWithConfig(time);
}
}