# 2、uniapp对接 - js注入方式
该对接方式只适用于对接游戏cpl
uniapp对接js注入demo下载 (opens new window)
# 适配ios + android
# 1、保存js文件
将下面js代码保存至本地项目中
查看
(function(w) {
function plusReady() {
console.log("plusReady");
};
if (w.plus) {
plusReady();
} else {
document.addEventListener("plusready", plusReady, false);
};
//IOS跳转
function openSafari(url) {
plus.runtime.openURL(url);
console.log(url)
}
var packName = null;
var dtask = null;
var android = {
CheckInstall: function(pg) {
console.log("CheckInstall" + pg);
this.packName = pg;
var b = plus.runtime.isApplicationExist({
pname: pg
}) ? 1 : 0;
console.log("CheckInstall_Return 是否已安装 " + this.packName + b);
CheckInstall_Return(b)
},
OpenAPP: function(pg) {
console.log('OpenAPP' + pg);
if (plus.os.name == "Android") {
plus.runtime.launchApplication({
pname: pg
}, function(e) {
alert("Open system default browser failed: " + e.message);
});
}
},
Browser: function(pg) { //IOS下载
plus.runtime.openURL(pg);
console.log(pg)
},
InstallAPP: function(down_url) {
console.log('InstallAPP' + this.packName + " " + down_url);
var index = down_url.lastIndexOf('/') > down_url.lastIndexOf('?') ? down_url.lastIndexOf('/') : down_url.lastIndexOf(
'?');
var apk_name = "_downloads/" + down_url.substring(index + 1, down_url.length);
if (apk_name.indexOf(".apk") == -1) {
apk_name = apk_name + '.apk';
}
console.log("下载文件 " + apk_name);
if (dtask != null && dtask.url === down_url) {
console.log("任务正在下载中!")
return;
}
var options = {
method: "GET",
filename: apk_name
};
console.log("开始创建下载任务 ");
var precent = 0;
var pkName = this.packName;
dtask = plus.downloader.createDownload(down_url, options, null);
dtask.addEventListener("statechanged", function(task, status) {
if (!dtask) {
return;
}
switch (task.state) {
case 1: // 开始
console.log("开始下载 ...");
console.log("开始下载 ..." + pkName + "->" + precent);
precent = 0;
break;
case 2: // 已连接到服务器
console.log("链接到服务器... ");
console.log("链接到服务器 ..." + pkName + "->" + precent);
precent = 0;
break;
case 3: // 已接收到数据
var cur_precent = parseInt(100 * task.downloadedSize / task.totalSize) //Math.round(task.downloadedSize * 100 / task.totalSize)
if (precent != cur_precent) {
precent = cur_precent;
console.log("正在下载…… packageName->" + pkName + " progress->" + precent + "%");
setProgress(pkName, precent);
}
break;
case 4: // 下载完成
var filepath = task.filename;
console.log("下载完成 " + filepath);
setProgress(pkName, 0);
var install_options = {
force: false
};
plus.runtime.install(filepath, install_options, function(widgetInfo) {
console.log("安装成功");
dtask = null;
console.log(dtask == null);
}, function(e) {
console.log("安装失败" + e.message);
dtask = null;
console.log(dtask == null);
});
break;
}
});
dtask.start();
console.log("下载任务创建成功 ");
}
};
w.android = android;
})(window);
# 2、注入js文件
注意:this.url 需要从接口认证获取
以下是创建webview进行js注入示例,可自行定义webview加载方式
var wv = plus.webview.create(this.url, "xw", {
titleNView: {
backgroundColor: "#0066CC",
titleColor: '#000000',
titleText: '爱变现',
autoBackButton: true,
}
});
wv.addEventListener("loaded", (function() { //android 可写外面 ios的js注入必须在页面加载完成后
console.log("开始注入js");
// 该js文件就是第一步保存的js文件地址
wv.appendJsFile('_www/hybrid/html/xianwan.js')
console.log("注入js完成");
}));
wv.show();
// 获取当前页面的webview对象,this.$mp.page当前页面的实例,也可以使用 plus.webview.currentWebview()
var currentWebview = this.$mp.page.$getAppWebview();
// 一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭
currentWebview.append(wv);
# unipp 部分方法示例
// 1 、获取设备号deviceid方法
if (plus.os.name == "Android") {
var Context = plus.android.importClass("android.content.Context");
var tephoneManager = plus.android.importClass("android.telephony.TelephonyManager");
var tm = plus.android.runtimeMainActivity().getSystemService(Context.TELEPHONY_SERVICE);
this.imei = tm.getDeviceId();
}
// 2、部分实现代码 不要直接拷贝
// #ifdef APP-PLUS
//获取方法介绍
var Build = plus.android.importClass("android.os.Build");
var androidosv = Build.VERSION.SDK_INT;
plus.device.getOAID({
success: function(e) {
console.log('getOAID success: ' + JSON.stringify(e));
that.msa_oaid = e.oaid;
console.log(e.oaid);
},
fail: function(e) {
console.log('getOAID failed: ' + JSON.stringify(e));
that.msa_oaid = ''
console.log(e.oaid);
}
});
← 1、uniapp接入爱变现sdk 运营规范 →