liyayan 941ba1abd4 4A登陆联调,token添加模拟,优化代码结构 | 5 gadi atpakaļ | |
---|---|---|
.. | ||
src | 5 gadi atpakaļ | |
Readme.md | 5 gadi atpakaļ | |
package.json | 5 gadi atpakaļ | |
plugin.xml | 5 gadi atpakaļ |
支持平台:iOS 9 ~ 12
; Android:4.4 ~ 8
功能:启动传参(请注意额外配置)
项目根目录下package.json 文件中 dependencies 添加插件依赖,插件的网络地址或本地地址,如以下两种方式均可以 "cordova-plugin-dingxin-sso": "http://test:123456@120.78.83.172/mobility/cordova-plugin/yi-dong-ying-yong.git" "cordova-plugin-dingxin-sso": "file:./myplugins/yi-dong-ying-yong-copy"
Mac为terminal/Win为DOS窗口中,执行以下命令 yarn install ,不要使用npm install
项目根目录下config.xml文件中
如果没有则添加
**<variable name="URL_SCHEME" value="本应用的url scheme值,请手动更改" />** 设置规则请参考iOS额外配置
如果url scheme修改失败,则主动修改插件yi-dong-ying-yong-copy下的plugin.xml文件,然后再次执行 yarn install
<preference name="URL_SCHEME" default="本应用的url scheme值,请手动更改"/>
在登录component.ts 添加以下sample代码:
cordova.dingxin.sso.login(
(ssoRes) => {
// dingxin.sso 登录回调
alert(ssoRes);
let data = JSON.parse(ssoRes);
// TODO ...
}, () => {
// dingxin.sso 登录失败回调
alert("4A 登录失败");
// TODO ...
}, "2", "com.csg.mobileark"); // 2: 使用移动平台V2 版本; "com.csg.mobileark": 安卓为移动应用平台app的 package id, iOS则要修改为本应用的urlScheme。
移动应用平台是通过URL Scheme唤醒APP的时候把登录信息传递到目标APP,所以需要格外配置
AppDelegate.m
文件
```
#import "SSOLoginPlugin.h"(BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary *)options{ // 发送应用被打开的通知给Cordova [[NSNotificationCenter defaultCenter] postNotificationName:CDVPluginHandleOpenURLNotification object:url];
[SSOLoginPlugin handleOpenUrl:url commandDelegate:self.viewController.commandDelegate];
return NO;
}
也可以使用打包脚本把已经写好的AppDelegate.m在cordova 生产iOS Platform的时候覆盖生产的AppDelegate.m
cp $BASEDIR/AppDelegate.m $BASEDIR/../platforms/ios/角色1/Classes```
URL Scheme的设置
规则:bundle id + md5加密,如培平/乐学南网cn.csg.9558bfc348
,招聘cn.cst.c66105c6ab
等
如项目根目录下config.xml中添加:
<plugin name="cordova-plugin-dingxin-sso" spec="./myplugins/yi-dong-ying-yong">
<variable name="URL_SCHEME" value="加密后的字符串" />
</plugin>
注意如果使用了cordova-plugin-inappbroswerwithheader
插件,需要将value保持一致
iOS接收数据 分为 应用主动调起平台2.0进行登录(App主动获取) 和 平台2.0在工作台点击图标唤醒应用(App被动登录) 两种情况 ``` // App主动获取(调试模式,仅iOS下有效) function gettesttoken() { alert(12345); cordova.dingxin.sso.loginDebugiOS((success) => { let data = JSON.parse(success); }, (error) => {
}, '2', '本应用的url scheme', 'true(iOS有效)'); };
// App被动登录( 该代码仅应用被平台2.0在工作台点击图标打开时才会有作用,目前仅iOS有效 解决需要手动点击登录,仅iOS有效,Android解决思路:在H5页面启动时主动调用cordova.dingxin.sso.login方法 function handleOpenUrl(params) {
alert("被动获取" + params);
// Android被动获取方法为入口处 主动调用 App主动获取 的方法
};
## Android格外配置
在对应Module下的build.gradle目录中增加如下代码:
apply plugin: 'com.android.application'
// 增加这一行 repositories { flatDir { dirs 'libs' } }
android {
// ...
}
最后在dependencies中进行引用,即完成SDK的导入。代码如下所示:
android {
// ...
}
dependencies {
// 增加这一行,xxx为版本号
implementation(name: 'appstore_sso-xxx', ext: 'aar')
}
注意:1)`implementation`为`com.android.tools.build:gradle` 3.0及以上版本出现的闭包。
因为Android可以隐藏APP桌面图标,建议通过打包脚本添加以下
cp $BASEDIR/MainActivity.java $BASEDIR/../platforms/android/src/cn/csg/zhangshangnanwang/MainActivity.java cp ./Base64Utils.java ./platforms/android/src/cn/csg/lexuenanwangs/Base64Utils.java sed -i -e 's// /' ./platforms/android/AndroidManifest.xml ```