我现在的使用场景是H5也嵌套在APP里面,然后用js调用IOS的函数获取登录信息,代码如下:
var p=GetLoginPhone() ;//这里,如果是IOS,返回不了获取到的手机号码
function GetLoginPhone() {
var phone = '';
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
//调用
if (isAndroid) {
var phones = androidObj.GetPhone();
if (!phones) {
androidObj.ToLogin();
}
else {
// 使用手机号码 phone
phone = phones;
}
}
else if (isiOS) {
GetIOSPhone(function (phones) {
if (!phones) {
setupWebViewJavascriptBridge(function (bridge) {
bridge.callHandler('ToLogin', function responseCallback(responseData) {
});
});
}
else {
//使用手机号码 phone
phone = phones;//这里phones其实已经获取到手机号码了,但是赋值给phone不了
}
});
}
return phone;
}
//IOS 获取手机号码
function GetIOSPhone(callback) {
setupWebViewJavascriptBridge(function (bridge) {
bridge.callHandler('GetPhone', function responseCallback(responseData) {
var myPhone = responseData;
callback(myPhone);
});
});
}
//IOS
function setupWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'https://bridge_loaded';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function () { document.documentElement.removeChild(WVJBIframe) }, 0)
}
怎么没有人回答啊!不要沉了啊!