Android版集成方法
2、将SDK中的cmbkeyboard.jar复制到Android工程的libs目录下,并将SDK中res目录下的内容,复制到Android工程的res目录下(SDK的res下的文件都带前缀cmbkb)。具体可参见kbTest示例工程。
3、AndroidManifest.xml中声明引用jar包中的组件PBKeyboardActivity,并声明服务权限;
4、调用键盘
需要重写webview的shouldOverrideUrlLoading,用以处理特殊的url,见示例程序kbTest
二、接口
用的类只有一个 cmb.pb.util.CMBKeyboardFunc
boolean HandleUrlCall(WebView mWebView, String url) //捕获页面发来的特殊URL,调起键盘(“http://cmbls/cmbKeyboard?id=....”)
如果出错,或者不是调用键盘的URL,则返回false;
CMBKeyboardFunc不要声明成全局对象。
三、密钥更新
res\values\cmbkb_strings.xml 中的cmbkb_publickey字段存放的时SDK使用的密钥,正式发布前需向我行申请用于生产环境的密钥,并更新到cmbkb_publickey字段后发布正式版本。
四、注意事项
1、cmbkeyboard.jar 已经做了混淆,集成的APP混淆后可能对SDK调用有影响,有两种解决办法(自选一种):
1)、 APP里不再对cmbkeyboard.jar做混淆
2)、 增加如下混淆配置:
-keepclasseswithmembers class cmb.pb.util.CMBKeyboardFunc {
public <init>(android.app.Activity);
public boolean HandleUrlCall(android.webkit.WebView,java.lang.String);
public void callKeyBoardActivity();
}
2、注意对http://cmbls/cmbKeyboard...url的拦截,因为这个url只是用于调起安全键盘的,在成功调起安全键盘后,webView不要去加载这个URL。
iOS版集成方法
2、在目标工程中添加库cmbkeyboard.framework,直接将库拷贝到目标工程目录下,并在Xcode中添加至项目。
3、在需要使用到安全键盘的地方,包含头文件:
#import <cmbkeyboard/CMBWebKeyboard.h>
#import <cmbkeyboard/NSString+Additions.h>
4、SecreteKeyBoard文件夹是密码键盘所用到的资源图片,将其拷贝到Assets.xcassets或者Image.xcassets目录下即可,若图片没有加载,则显示的密码键盘页面是透明的。
5、密码键盘的调用在WebViewController中,需重写webView方法,这个网页是商户自己实现的(可以参考示例工程kbTest)。当用户点击输入密码时,网页捕获到重定向url:“http://cmbls/cmbKeyboard?id=....”时调用密码键盘,在WebViewController里实现。具体调用方式如下:
- (BOOL)webView:(UIWebView *)_webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
if ([request.URL.host isCaseInsensitiveEqualToString:@"cmbls"]) {//此处开始调用键盘
CMBWebKeyboard* secKeyboard = [CMBWebKeyboard shareInstance];
[secKeyboard showKeyboardWithRequest:request];
secKeyboard.webView = _webView;
//以下是实现点击键盘外地方,自动隐藏键盘
UITapGestureRecognizer* myTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:myTap]; //这个可以加到任何控件上,比如你只想响应WebView,我正好填满整个屏幕
myTap.delegate = self;
myTap.cancelsTouchesInView = NO;
return NO;
}
return YES;
}
6、请注意需要隐藏键盘的情况即调用hideKeyboard方法的地方,即显示键盘的时候(隐藏原来的键盘)、关闭键盘的时候、点击键盘外的地方时、离开网页时。具体请见示例程序kbTest。
公钥配置说明:
在商户App的Info.plist文件中(不是framework中的Info.plist)增加属性CMBPublicKey:
<key>CMBPublicKey</key>
<string>公钥内容</string>
正式发布前需向我行申请用于生产环境的密钥,并更新到CMBPublicKey字段后发布正式版本。
注意事项:
1、iOS9及以上引入新特性,ATS,要求APP内访问的网络必须使用HTTPS协议,故需在项目的info.plist文件中增加如下属性:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
2、注意对http://cmbls/cmbKeyboard...url的拦截,因为这个url只是用于调起安全键盘的,在成功调起安全键盘后,webView不要去加载这个URL。具体做法是在webview方法中,在if语句的最后面加上一句return NO;拦截请求。