安卓MobLink的集成與使用
? 集成文檔:http://www.mob.com/wiki/detailed?wiki=MobLink_for_Android_gradle_quick&id=34
1.集成準(zhǔn)備
注冊(cè)應(yīng)用蓝牲,需要appId 與appkey
2.集成配置
第一步:項(xiàng)目的更目錄build.gradle 配置
buildscript {
repositories {
...
}
dependencies {
...
classpath 'com.mob.sdk:MobSDK:2018.0319.1724'
}
}
第二步:項(xiàng)目的app模塊的build.gradle配置
// 添加插件
apply plugin: 'com.mob.sdk'
// 在MobSDK的擴(kuò)展中注冊(cè)MobLink的相關(guān)信息
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"
MobLink {
uriScheme "您后臺(tái)配置的scheme"
appLinkHost "您后臺(tái)開(kāi)啟AppLink時(shí)生成的Host"
}
}
? 這樣就集成完畢,重新build即可稚配。
3.集成使用
? 場(chǎng)景監(jiān)聽(tīng)
//Java代碼
class SceneListener extends Object implements RestoreSceneListener {
@Override
public Class<? extends Activity> willRestoreScene(Scene scene) {
return MainActivity;
}
@Override
public void notFoundScene(Scene scene) {
//TODO 未找到處理scene的activity時(shí)回調(diào)
}
@Override
public void completeRestore(Scene scene) {
// TODO 在"拉起"處理場(chǎng)景的Activity之后調(diào)用
}
}
設(shè)置監(jiān)聽(tīng),建議放到Application中
//java代碼
MobSDK.init(this);
MobLink.setRestoreSceneListener(new SceneListener());
4.tomcat 部署分享H5
? 使用MobLink的js勾缭,調(diào)起app
4.1MobLink的H5參數(shù)傳遞
<script type="text/javascript">
MobLink([
{
el: "",
path: "applink/a",
params: {
key1: "sunlands1",
key2: "sunlands2",
}
},
{
el: "#openAppBtn",
path: "applink/b",
params: {
key1: "sunlands1",
key2: "sunlands2",
}
},
]);
</script>
- MobLink 支持?jǐn)?shù)組=>MobLink([...]) 和對(duì)象=>MobLink({...})
- 頁(yè)面上有多個(gè)元素需要跳轉(zhuǎn)時(shí)使用數(shù)組方式,僅單個(gè)元素時(shí)可以使用對(duì)象的方式進(jìn)行初始化
- el: 表示網(wǎng)頁(yè)上Element的id值,該字段為空或者不寫(xiě)則表示MobLink默認(rèn)浮層上的打開(kāi)按鈕(注意:必須為元素id,以#開(kāi)頭)
- path: 對(duì)應(yīng)App里的路徑
- params: 網(wǎng)頁(yè)需要帶給客戶端的參數(shù)
4.2 android的H5參數(shù)接收與處理
? android使用SceneListener監(jiān)聽(tīng)h5的參數(shù)食磕,根據(jù)路徑與參數(shù)跳轉(zhuǎn)到相對(duì)應(yīng)的android頁(yè)面缤沦,Scene類(lèi)與js的傳參是對(duì)應(yīng)的首尼,從而實(shí)現(xiàn)場(chǎng)景還原时鸵。
public class Scene implements PublicMemberKeeper, Serializable {
public String path;
public HashMap<String, Object> params;
public Scene() {
}
public String getPath() {
return this.path;
}
public void setPath(String var1) {
this.path = var1;
}
public HashMap<String, Object> getParams() {
return this.params;
}
public void setParams(HashMap<String, Object> var1) {
this.params = var1;
}
}
?
5.存在問(wèn)題
- 微信不能直接調(diào)起app,需要通過(guò)瀏覽器調(diào)起
- 用戶邀請(qǐng)拉新的記錄需要自己處理(Mob沒(méi)有相關(guān)支持)
6.集成過(guò)程中的問(wèn)題:
Could not GET 'https://jcenter.bintray.com/com/mob/sdk/MobSDK-Impl/2019.1109.1046/MobSDK-Impl-2019.1109.1046.jar'. Received status code 400 from server: Bad Request
解決辦法:
/Users/admin/.gradle/gradle.properties 去掉錯(cuò)誤的代理:
systemProp.https.proxyPort=80
systemProp.http.proxyHost=mirrors.neusoft.edu.cn
systemProp.https.proxyHost=mirrors.neusoft.edu.cn
systemProp.http.proxyPort=80