在混合App的开发中,web端和本机端之间有几种常见的通信场景
APP开发
浏览:866 次

在本文中,我们主要描述混合App中的几种常见通信场景,包括注册、登录、支付、登录状态维护和退出。由于我已经在上一篇文章中解释了web端和本机之间的通信模式,所以本文将重点讨论其使用。如果您不知道如何在web端和本机端之间进行通信,请参阅我的文章了解。了解基本知识很重要。
1、 实现注册功能时的通信
注册.vue
注册界面
1.注册按钮点击事件对不同平台使用不同的逻辑。
/**
*注册按钮点击事件
*/
onRegisterClick:函数(){
如果(this.username.length===0){
警报('请填写用户名');
回来
}
如果(this.password.length===0||this.passpord!=this.comfirmPassword){
警报('请填写密码');
回来
}
这md5Password=md5(this.password);
if(window.androidJSBridge){
//Android环境中的处理逻辑
this.onRegisterToAndroid();
}else if(window.webkit){
//IOS环境中的处理逻辑
this.onRegisterToIos();
}
}
2.调用Android注册方法。您需要在android端注册register方法,并返回它是否通过验证的值(布尔值)。
/**
*调用Android注册方法
*/
onRegisterToAndroid:函数(){
let userJson=JSON.stringify({
'用户名':this.username,
'密码':this.md5Password
});
let result=window.androidJSBridge.register(userJson);
this.onRegisterCallback(结果);
}
3.调用IOS注册方法。当然,您还需要在IOS的本机端定义register方法。由于IOS无法直接将结果返回到web端,因此需要将回调方法onRegisterCallback附加到web端的窗口对象。IOS端完成处理后,执行该方法。

/**
*调用IOS注册方法
*/
onRegisterToIos:函数(){
让userJson={
'用户名':this.username,
'密码':this.md5Password,
};
窗registerCallback=this.onRegisterCallaback;
window.webkit.messageHandlers.register.postMessage(userJson);
},
请确保在执行窗口之前安装onRegisterCallback方法。webkit。消息处理程序。登记postMessage(userJson)。
4.注册回调方法
/**
*注册方法回调
*/
onRegisterCallback:函数(结果){
如果(结果){
警报('注册成功');
this.onBackClick();
}其他{
警报(“注册失败,请重试”);
}
}
2、 实现登录功能时的通信
登录界面
当我们完成注册功能时,其他功能将被简单复制。不用多说,我们就能从院子里看到真相。
登录vue
1.登录按钮点击事件
/**
*登录按钮单击事件
*/
onLogiclick:函数(){
如果(this.username.length===0|| this.password.length===0){
警报('未输入用户名或密码');
回来
}
这md5Password=md5(this.password);
if(window.androidJSBridge){

this.onLoginToAndroid();
}else if(window.webkit){
this.onLoginToIos();
}
},
3.调用Android登录验证
/**
*调用Android登录验证
*/
onLoginToAndroid:函数(){
让用户={
'用户名':this.username,
'密码':this.md5Password
};
let result=window.androidJSBridge.login(JSON.stringify(用户));
this.onLoginCallback(结果);
},
4.调用ios登录验证
/**
*调用IOS登录验证
*/
onLoginToIos:函数(){
让用户={
'用户名':this.username,
'密码':this.md5Password
};
窗loginCallback=this.onLoginCallback;
window.webkit.messageHandlers.login.postMessage(用户);
},
5.接收登录验证结果
/**
*接收登录验证结果
*/
onLoginCallback:函数(结果){
开关(结果){
案例“-1”:
警报(“系统内部错误”);
打破
案例“0”:

这是$store。commit('setUsername',this.username);