争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

JavaScript与原生应用常用的数据交互方式的介绍

时间:2024/5/10作者:未知来源:争怎路由网人气:

(window.webkit && window.webkit.messageHandlers.activityDetails)) { mobile.callMoblieMethods({ name: 'activityDetails', params: {activityId: item.act_id}}); }

这个判断条件大家看起来可能很诡异,我测试过这各种机器的机型,安卓机window肯定是没有的属性,但是在IOS上他会自带webkit属性所以我们先判断他是否有webkit属性在判断他是否有注入的方法名这样他就能很好的调用这个方法了;

为了方便大家查找这里也附上移动端的代码:

//Android

public class AndroidJavascriptInterface {

  Activity mActivity;

  public AndroidJavascriptInterface(Activity activity) {
      this.mActivity = activity;
  }

  //诊所详情
  @JavascriptInterface
  public void clinicDetails(String jsonData) {
      Log.i("znh", "H5-JS-诊所详情");
      Intent intent = new Intent(mActivity, OutPatientActivity.class);
      Bundle bundle = new Bundle();
      bundle.putString(Constants.CLINIC_ID, GsonUtil.getJSONObjectKeyVal(jsonData, "clinicId"));
      intent.putExtras(bundle);
      mActivity.startActivity(intent);
  }

  //活动详情
  @JavascriptInterface
  public void activityDetails(String jsonData) {
      Log.i("znh", "H5-JS-活动详情");
      Intent intent = new Intent(mActivity, ActivityDetailActivity.class);
      Bundle bundle = new Bundle();
      bundle.putString("id", GsonUtil.getJSONObjectKeyVal(jsonData, "activityId"));
      intent.putExtras(bundle);
      mActivity.startActivity(intent);
  }
}


//IOS
#import <JavaScriptCore/JavaScriptCore.h>

WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
[wkWebConfig.userContentController addScriptMessageHandler:self name:@"clinicDetails"];
[wkWebConfig.userContentController addScriptMessageHandler:self name:@"activityDetails"];

通过这个流程大家就能很方便的调用原生的方法了。

场景2

我们需要在短信中使用某个链接去打开原生应用如果没有那么就会提示他去下载某个应用,首先原生的应用需要定义一个url链接以备前端程序员在浏览器中调用,先给大家看一下链接示例:

// IOS
iOSStarClinic://

// Andriod 
yjjkyl://starclinic

短小精悍,你只需要调用这个就可以了

那么在js中要怎么做呢?

if(this.isIOS) {
    window.location.href = 'iOSStarClinic://';//与APP约定的一个协议URL
} else {
    var state = null;
    try {
        state = window.open('yjjkyl://starclinic', '_blank');//与APP约定的一个协议URL
    } catch(e) {}
    if (state) {
        window.close();
    } else {
        window.location.href = gbs.patientDownUrl;
    }
}

先判断一下当前是IOS还是安卓环境,其实现在的浏览器已经不能通过偏方(计时的方法)来解决检查当前时候有没有安装应用了,因为浏览器会弹出提示框用户确认才能跳转所以用户一旦不点击确认那么浏览器就会进行跳转!所以在当前页应该要给用户显示一些内容以便用户未打开应用的时候有其他的业务流程。

以上就是JavaScript和原生应用常用的数据交互方式的介绍的详细内容,更多请关注php中文网其它相关文章!


网站建设是一个广义的术语,涵盖了许多不同的技能和学科中所使用的生产和维护的网站。



关键词:JavaScript与原生应用常用的数据交互方式的介绍




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版