Appearance
🔧 实现细节
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 引擎上一个接口
调用@JavascriptInterface的 openPage(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() 返回一个布尔值,告诉网页是否打开了目标页