Skip to content

🔧 实现细节

LinkedME

解析并判断对象中的字段,按照 link_type 字段表对应页面做本地路由跳转。

1、扫描下面二维码,频道页(专题)

2、集成 LinkedME SDK ,提供了解析 URL Scheme 方法,程序返回如下结构:

json
{
    "version": "1.1.0",
    "link_type": "10",
    "terms_id": "6"
}

3、先判断协议版本。如 6.2 适配了 1.1.0 版本,仅对 1.1.0 版本做判断处理,遇到高版本协议,如 1.5.0 时,应该提示更新客户端。

4、根据 link_type 字段表,应跳转到某个频道,并取得额外的 terms_id 得知是专题频道

JSBinder

活动页面与客户端交互,调起某些页面,测试页面:

1、应用内打开 🔗 http://u6.gg/rFNFy点击打开会员订阅页

2、内置浏览器,通过编程执行 JSBinder.openPage(link_type, uri),各端实现方法不一;

javascript
JSBinder.openPage('7', 'page://?native=infzm&link_type=7');

WARNING

JSBinder 是客户端自带注入的内置对象

WARNING

H5 SDK_appTool.openPage 函数可替代 openPage() 调用 ,方便 H5 开发者

Android

JavascriptInterface 是提供一个 JS 引擎上一个接口

调用@JavascriptInterfaceopenPage(link_type, uri) 方法:

java
@JavascriptInterface
public String openPage(String link_type, String url) {
    if ("3".equalsIgnoreCase(link_type)) {
        Intent intent = new Intent(ActivitysActivity.this, HomeActivity.class);
        intent.putExtra("link_type", LinkedMeMiddleActivity.HOME_TAB_2);
        startActivity(intent);
        return "true";
    } 
    // other if 
}

iOS

通过拦截并解析当前 URI,如 page://?native=infzm&link_type=7

javascript
JSBinder.prototype.openPage = function(link_type, uri) {
    if(!link_type && !uri) return false
    window.location.href = (typeof uri != 'undefined') ? uri : ("page://?" + "native=infzm" + "&" + "link_type=" + encodeURIComponent(link_type))
    return true;
}

3、openPage() 返回一个布尔值,告诉网页是否打开了目标页