敬告:此 demo 演示为开放测试页面,仅用于开发者快速测试体验应用功能,请严格遵守开发者协议,威尼斯人888-5845vip威尼斯电子游戏。
♦ js-sdk 引用方式:
♦ 普通网页 script 方式加载:下载最新版 ,请在页面上调用 jsbridge 接口之前引用 jsbridge-mini.js 库;
♦ js module 方式引用:npm install ym-jsbridge
u.cshtml
u.cshtml?xapp-navigation=1
u.cshtml#xapp-navigation=1
u.cshtml?xapp-share=1&xapp-share-title=百度手机站&xapp-share-url=https://m.baidu.com/&xapp-share-image=http://m.baidu.com/static/index/plus/plus_logo.png&xapp-share-description=这是自定义摘要
jsbridge.setoptions 的参数可以通过 url querystring 传递,用法请参考 setoptions js 接口说明。
在浏览器客户端通过 javascript 代码判断;
客户端或服务器端都可通过检查 useragent 是否存在关键词 lt-app 判断网页是否在app内打开的;
if (/lt-app/.test(navigator.useragent)) {
alert("在app内");
} else {
alert("不在app内");
}
//php
$inapp = strpos($_server['http_user_agent'], 'lt-app');
if ($inapp) {
//在app中
}
//.net
bool inapp = (request.useragent.indexof("lt-app") >= 0);
if (inapp)
{
//在app中
}
//java
boolean inapp = (request.getheader("user-agent").indexof("lt-app") >= 0);
if (inapp)
{
//在app中
}
属性
获取网页是否在app中打开的
if (jsbridge.inapp) {
alert("你正在app中使用");
} else {
alert("不在app中");
}
获取app内核版本号
alert(jsbridge.version)
获取app打包版本号
//数字版本号,如 100 alert(jsbridge.appversion);
获取当前页面是否在主窗口中( false 则为子窗口)
//true 主窗口, false 子窗口 //需在 jsbridge.isready() 之后调用 alert(jsbridge.isroot);
界面控制
jsbridge.setoptions({
//需要加载的链接
url : '',
//是否显示顶部标题栏, 不设置则用app配置
showtitle: true,
//顶部标题栏背景色, 不设置则用app配置
titlecolor: "#56bc94",
//顶部标题栏文字, 不设置则用网页标题
titletext: "hello web-native app",
//顶部标题栏文字颜色, 不设置则用app配置
titletextcolor: "#ffffff",
//是否全屏(隐藏顶部电池/信号状态栏), 不设置则用app配置
fullscreen: false,
//状态栏背景色, 不设置则用app配置
statusbarcolor: "#56bc94",
//状态栏文字/图标是否显示为黑色, 不设置则用app配置
statusbarblacktext: false,
/**
* 屏幕方向
* 0 自适应(注意需取消手机方向锁定)
* 1 横屏
* 2 竖屏
**/
screenorientation: 0,
//是否启用下拉刷新
refresh: false
});
jsbridge.setoptions({
showtitle : false,
fullscreen: true,
screenorientation: 1
});
jsbridge.setoptions({
showtitle : true,
fullscreen: false,
screenorientation: 2
});
jsbridge.setoptions({
showtitle : true,
fullscreen: false,
screenorientation: 2
});
jsbridge.setoptions({
showtitle : false,
fullscreen: true
});
jsbridge.setoptions({
showtitle : true,
fullscreen: false
});
jsbridge.setoptions({
url: "https://m.baidu.com/"
});
1. 给参数名加上 xapp- 前缀,添加到 url 查询串可以起到跟调用 js 接口一样的效果;
2. url 参数值需要进行 urlencode utf8 编码;
3. js 接口参数与 url 参数只能用其一,js 优先;
4. 注意,这种方式只适用于在新窗口中打开的页面(你可以在链接中加上 xapp-target=blank 参数,强制页面在新窗口中打开);
示例链接:
u2.cshtml?xapp-target=blank&xapp-screenorientation=1&xapp-fullscreen=true
//参数说明请参见 jsbridge.setoptions 方法
//二者的参数相同
jsbridge.open({
url : 'http://www.zhidianwl.com/doc/u2.cshtml',
showtitle: true
});
//全屏并用横屏方式打开
jsbridge.open({
url : 'http://www.zhidianwl.com/doc/u2.cshtml',
showtitle: false,
fullscreen: true,
screenorientation: 1
});
//自适应横/竖屏方式打开
jsbridge.open({
url : 'http://www.zhidianwl.com/doc/u2.cshtml',
showtitle: true,
titlecolor: "#ffffff",
titletextcolor: "#000000",
statusbarcolor: "#ffffff",
statusbarblacktext: true,
screenorientation: 0
});
jsbridge.openinbrowser('https://m.baidu.com');
//需在子窗口中执行 close //主窗口中执行 close 无效 //如需退出 app 可以在任何地方执行 jsbridge.exit() jsbridge.close();
关闭当前窗口,并在父窗口执行指定的 js 代码
jsbridge.close("alert('欢迎回到我这里~~\n' location.href)");
当关闭当前窗口时执行指定的回调函数,回调函数返回 true / false 以指示是否允许关闭。
//需在子窗口中调用,主窗口中执行无效
jsbridge.onclose(function(appdata){
console.log(json.stringify(appdata));
if (confirm("确实要关闭吗?")) {
return true; //允许关闭
} else {
return false; //不关闭
}
});
当web窗口可后退(cangoback)时,用户点按安卓后退键时触发,回调函数返回 true / false 以指示是否允许后退。
//当页面可后退时才会触发
//仅支持 android
jsbridge.onbackpressed(function(appdata){
console.log(json.stringify(appdata));
if (confirm("确实要后退吗?")) {
return true; //允许后退
} else {
return false; //不允许
}
});
1. 工具栏实际上是一个web窗口,你可以在里面执行任意 js 语句; 2. 如未启用工具栏则不执行任何操作;
jsbridge.evalintoolbar("location.reload()");
♦ 可以通过 uri scheme 呼叫其他任何app;
♦ 支持单个 uri,callback 回调返回成功与否;
♦ 支持多个 uri,app会逐个尝试启动,直到成功启动一个 uri 链接为止,callback 回调返回成功的 uri 序号;
//单个 uri
jsbridge.launch("tel:10010", function(succ) {
alert(succ ? "启动成功" : "启动失败");
});
//多个 uri
//按数组顺序尝试启动,遇到一个成功的则不再尝试后面的,
//回调返回成功的序号,-1表示全部没成功
jsbridge.launch([ // uri 数组
"scheme1:xxx",
"scheme2:xxx",
"scheme3:xxx"
], function(index) {
//成功启动的 uri 序号
// -1 表示全部没成功
alert(index);
});
jsbridge.actionbutton({
//true 显示, false 隐藏
visible: (window.bool0 = !window.bool0)
});
//显示app配置里勾选的按钮面板 jsbridge.action();
//要显示的按钮数组 //如果未指定按钮,则以app配置里勾选的按钮为准 //可直接执行 jsbridge.action(); var btns = [ "sharewxfriend", //分享到微信好友 "sharewxtimeline",//分享到微信朋友圈 "shareqqfriend", //分享到qq好友 "shareqqzone", //分享到qq空间 "shareweibo", //分享到微博 "sharemenu", //弹出分享菜单 "copylink", //复制链接 "back", //后退 "forward", //前进 "refresh", //刷新 "fullscreen", //进入全屏/退出全屏 "orientation", //横竖屏切换 "clearcache", //清除缓存 "scan", //扫一扫 "showimages", //浏览图片 "openinbrowser", //在浏览器中打开 "backtohome", //回到5845vip威尼斯电子游戏首页 "exit" //退出app ]; jsbridge.action(btns);
但点击更多按钮,显示功能按钮面板时触发。你可以调用这个方法指定显示哪些按钮。
//要显示的按钮数组
var btns = [
"sharewxfriend", //分享到微信好友
"sharewxtimeline",//分享到微信朋友圈
"copylink", //复制链接
"refresh", //刷新
"openinbrowser" //在浏览器中打开
];
jsbridge.onmenuaction(btns);
alert("已设置");
//true 显示, false 隐藏 window.bool1 = !window.bool1; jsbridge.uinavigation(bool1);
//true 显示, false 隐藏 window.bool2 = !window.bool2; jsbridge.uishare(window.bool2);
//true 显示, false 隐藏 window.bool3 = !window.bool3; jsbridge.uiactions(bool3);
//true 启用, false 禁用 window.bool4 = !window.bool4; jsbridge.uirefresh(bool4);
侧滑边栏
网页截屏
//保存到相册
jsbridge.capturewebpage({
//是否整页截屏(滚屏截图,长屏)
fullpage : false,
//截屏后是否弹出分享
share : true,
//是否将图片以 jpg base64 格式返回, 默认 false
//false 保存到相册
//true 以 base64 格式返回
needresult: false
});
//返回 jpg base64
jsbridge.capturewebpage({
needresult: true
}, function(success, res) {
console.log(res.base64);
if (res.base64) {
alert("成功,base64 字符数量 " res.base64.length);
}
});
jsbridge.capturewebpage({
fullpage: true,
share : true
});
长按(链接、图片)
剪贴板
设置剪贴板文本
var text = "hello 世界 " new date().gettime();
jsbridge.setclipboardtext(text);
alert("已复制到剪贴板");
获取剪贴板文本
jsbridge.getclipboardtext(function(text) {
alert(text);
});
文件系统与sqlite数据库
微信、支付宝、银联、农行、工行、中信支付
• 可以将如下参数 get 或 post 提交到 https://g.yimenyun.net/pay/ 发起支付
• channel: 支付渠道, 0 微信, 1 支付宝, 2 银联云闪付
• orderid: 订单号
• title: 订单名称
• amount: 支付金额(元)
• url_succ: 支付成功后跳转的链接
• url_fail: 支付失败跳转的链接
• 示例:
调用微信app完成名称为 购买vip会员 的订单 s63841307603 0.01元支付;
支付成功跳转到https://m.baidu.com/,失败跳转到 https://xw.qq.com/;
注意,要对各参数进行 urlencode utf-8 编码;
https://g.yimenyun.net/pay/?channel=0&orderid=s63841307603&title=购买vip会员&amount=0.01&url_succ=https://m.baidu.com/&url_fail=https://xw.qq.com/
channel 参数为 0 表示微信支付
jsbridge.pay({
channel: 0, //0为微信支付, 1为支付宝, 2为银联云闪付
orderid: new date().gettime().tostring(),
title : "购买vip会员",
amount : 0.01,
attach : "aaaa" //附加字段,通知时原样返回
}, function(succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付\n" text);
}
});
• 在你的服务器端使用 获取 "预支付交易会话标识 prepay_id",再参考 构造支付参数,交由此 js 函数发起支付;
• 此5845vip威尼斯电子游戏的支付方式 不需要 配置机密信息(api密钥)到打包平台;
jsbridge.wxpay({
appid : "应用id",
partnerid: "商户号",
prepayid : "预支付交易会话id",
package : "扩展字段",
noncestr : "随机字符串",
timestamp: "时间戳(单位是秒,不是毫秒,切记)",
sign : "签名"
}, function (succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付\n" text);
}
});
• 可以将如下参数 get 或 post 提交到 https://g.yimenyun.net/pay/ 发起支付
• channel: 支付渠道, 0 微信, 1 支付宝, 2 银联云闪付
• orderid: 订单号
• title: 订单名称
• amount: 支付金额(元)
• url_succ: 支付成功后跳转的链接
• url_fail: 支付失败跳转的链接
• 示例:
调用支付宝app完成名称为 购买vip会员 的订单 s63841307603 0.01元支付;
支付成功跳转到https://m.baidu.com/,失败跳转到 https://xw.qq.com/;
注意,要对各参数进行 urlencode utf-8 编码;
https://g.yimenyun.net/pay/?channel=1&orderid=s63841307603&title=购买vip会员&amount=0.01&url_succ=https://m.baidu.com/&url_fail=https://xw.qq.com/
channel 参数为 1 表示支付宝
jsbridge.pay({
channel: 1, //0为微信支付, 1为支付宝, 2为银联云闪付
orderid: new date().gettime().tostring(),
title : "购买vip会员",
amount : 0.01,
attach : "aaaa" //附加字段,通知时原样返回
}, function(succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付");
}
});
• 在你的服务器端参考 构造 "订单字符串",交由此 js 函数发起支付;
• 此5845vip威尼斯电子游戏的支付方式 不需要 配置机密信息(私钥/公钥)到打包平台;
orderstring:
jsbridge.alipay({
orderstring: $("#alipay").val()
}, function (succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付");
}
});
• 可以将如下参数 get 或 post 提交到 https://g.yimenyun.net/pay/ 发起支付
• channel: 支付渠道, 0 微信, 1 支付宝, 2 银联云闪付
• orderid: 订单号
• title: 订单名称
• amount: 支付金额(元)
• url_succ: 支付成功后跳转的链接
• url_fail: 支付失败跳转的链接
• 示例:
调用银联云闪付app完成名称为 购买vip会员 的订单 s63841307603 0.01元支付;
支付成功跳转到https://m.baidu.com/,失败跳转到 https://xw.qq.com/;
注意,要对各参数进行 urlencode utf-8 编码;
https://g.yimenyun.net/pay/?channel=2&orderid=s63841307603&title=购买vip会员&amount=0.01&url_succ=https://m.baidu.com/&url_fail=https://xw.qq.com/
channel 参数为 2 表示银联
jsbridge.pay({
channel: 2, //0为微信支付, 1为支付宝, 2为银联云闪付
orderid: new date().gettime().tostring(),
title : "购买vip会员",
amount : 0.01
//当前手机厂商 pay 类型,可选,仅支持安卓
//用 jsbridge.unionseinfo 函数获取
//, setype : ""
}, function(succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付");
}
});
• 在你的服务器端使用 获取 "银联受理订单号 tn",交由此 js 函数发起支付;
• 此5845vip威尼斯电子游戏的支付方式 不需要 配置机密信息(pfx证书)到打包平台;
jsbridge.unionpay({
tn: "替换成你的银联受理订单号"
//用 jsbridge.unionseinfo 函数获取到的当前手机厂商 pay 类型,可选(仅安卓,ios始终忽略此参数)
//, setype : ""
}, function (succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付");
}
});
获取银联手机厂商 pay 类型
jsbridge.unionseinfo(function (succ, text) {
if (succ) {
alert("setype:" text);
} else {
alert("error:" text);
}
});
检查用户是否已安装银联闪付app
jsbridge.unionpayappinstalled(function (yes) {
alert(yes ? "已安装" : "未安装");
});
• 农行掌上银行app支付 sdk 的 js api 接口映射;
• 请参考农行官方手册调用服务器端接口获取支付订单号 token,交由此 js 接口发起app支付;
jsbridge.abcpay({
token: "1111112222222233333"
}, function (succ, text) {
if (succ) {
alert("支付成功");
} else {
alert("支付失败或取消了支付");
}
});
检查用户是否已安装农行掌上银行app
jsbridge.abcpayappinstalled(function (yes) {
alert(yes ? "已安装" : "未安装");
});
• 工商银行app支付 sdk 的 js api 接口映射;
• 请参考工行官方手册调用服务器端接口获取支付信息,交由此 js 接口发起app支付;
//注意,请使用 生产环境 参数
jsbridge.icbcpay({
interfacename : "接口名",
interfaceversion: "接口版本号",
trandata : "交易信息",
mersignmsg: "交易信息签名",
mercert : "商户公钥文件信息"
}, function (succ, text) {
if (succ) {
alert("支付成功:" text);
} else {
alert("支付失败或取消了支付:" text);
}
});
微信/qq/支付宝 登录;微信一次性订阅消息、拉起小程序;
检查设备是否已安装微信客户端
jsbridge.wxappinstalled(function(yes){
alert(yes ? "已安装" : "未安装");
});
通过js函数回调获取登录结果及授权参数
jsbridge.wxlogin(function(succ, ret) {
if (succ) {
alert(json.stringify(ret));
} else {
alert("登录失败或取消了登录");
}
});
/*
1. 登录成功的结果在 ret 中返回,是个 json 对象:
2. 如果你在打包平台填写了 微信appsecret,app会用授权码 code 去获取 openid, access_token 等信息,由于授权码 code 只能使用一次,所以你再用 code 去腾讯接口获取信息会失败;
3. 如果没有填写 微信appsecret, ret 中只返回 code,你需要在服务器端用 code 微信appsecret 去腾讯接口获取信息;
{
code: //授权码,只能使用一次
openid: //如果在打包平台填写了 微信appsecret 将返回此字段
access_token: //如果在打包平台填写了 微信appsecret 将返回此字段
userinfo: { //用户信息,如果在打包平台填写了 微信appsecret 将返回此字段
nickname: "xxx"
//...
}
}
*/
登录结果及授权参数将通过 url query 传到给你指定的链接
jsbridge.wxlogin("./u.cshtml");
/*
1. 登录成功后将授权码 code 等参数附加到 url 上跳转链接
2. url 参数请参见 微信登录 通过函数回调
u.cshtml?code=xxx&openid=xxx
*/
微信一次性订阅消息,请参考官方 ,。
jsbridge.wxsubscribemsg({
template_id: "一次性订阅消息模板id",
scene : 123 //订阅场景值
}, function(succ, data) {
if (succ) {
alert("成功\n" json.stringify(data));
} else {
alert("失败\n" json.stringify(data));
}
});
/*
参数说明:
{
template_id: //字符串类型,你在微信开放平台所申请移动应用的一次性订阅消息模板id,请在微信开放平台上查看;
scene : //数字(0-10000之间),用来标识订阅场景值
}
-------------------
回调函数参数说明:
succ : //布尔类型,标识是否成功授权
data : //json 类型,授权成功时返回如下数据:
{
openid : //字符串,用户唯一标识
template_id: //字符串,订阅消息模板id
scene : //数字,订阅场景值
}
*/
拉起微信小程序,请参考官方 。
user_name:
path:
type:
jsbridge.wxlaunchminiprogram({
user_name: "{{wxlaunchminiprogram.user_name}}",
path : "{{wxlaunchminiprogram.path}}",
type : {{wxlaunchminiprogram.type}} //版本类型
}, function(succ, data) {
if (succ) {
alert("成功\n" json.stringify(data));
} else {
alert("失败\n" json.stringify(data));
}
});
/*
参数说明:
{
user_name: //字符串,小程序原始id,如 gh_d43f693ca31f
path : //字符串,拉起小程序页面的可带参路径,不填默认拉起小程序5845vip威尼斯电子游戏首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"
type : //数字,小程序版本类型,0 正式版,1 开发版,2 体验版(默认 0)
}
-------------------
回调函数参数说明:
【注意,需要在小程序中点击
拉起微信客服,请参考官方 。
corpid:
url:
jsbridge.wxopencustomerservicechat({
//必须,字符串类型,企业id
corpid: "{{wxopencustomerservicechat.corpid}}",
//必须,字符串类型,客服链接
url : "{{wxopencustomerservicechat.url}}"
}, function(succ, data) {
if (succ) {
alert("成功\n" json.stringify(data));
} else {
alert("失败\n" json.stringify(data));
}
});
通过js函数回调获取登录结果及授权参数
jsbridge.qqlogin(function(succ, ret) {
if (succ) {
alert(json.stringify(ret));
} else {
alert("登录失败或取消了登录");
}
});
/*
登录成功的结果在 ret 中返回,是个 json 对象:
{
openid: "wwwwwwwwwwwwwww",
access_token: "aaaaaaaaaaaaaaa",
userinfo: { //用户资料
nickname: "sssssss"
//...
}
}
*/
登录结果及授权参数将通过 url query 传到给你指定的链接
jsbridge.qqlogin("./u.cshtml");
/*
如果登录成功会跳转到链接
u.cshtml?openid=xxxx&access_token=xxxx&userinfo=xxxx
userinfo 参数是 json.stringify(userinfo) 的 urlencode 编码
*/
发起支付宝app登录
authinfo:
jsbridge.alipaylogin({
//必须,字符串类型,
authinfo: "{{alipaylogin.authinfo}}"
}, function(succ, result) {
if (succ) {
alert(json.stringify(result));
} else {
alert("登录失败或取消了登录\n" json.stringify(result));
}
});
/*
回调参数 succ 为 true 表示授权成功,result 示例:
{
resultstatus: "9000",
result: "success=true&auth_code=d9d1b5acc26e461dbfcb6974c8ff5e64&result_code=200&user_id=2088003646494707",
memo : ""
}
• result 即为授权信息,请提交到您的服务器,调用支付宝服务器端接口获取 access_token 和用户信息,服务器端sdk:https://opendocs.alipay.com/open/00y8k9 ;
• resultstatus 状态码说明:https://opendocs.alipay.com/open/218/105327#状态码 result_status 说明
*/
分享
//调用安卓/ios系统自带分享,无需配置打包微信、qq等插件 //分享文件请使用 文件系统插件的 fs.share 接口 jsbridge.sysshare({ //可选,弹窗标题 //仅用于android,部分设备可能不会显示标题 title: "发现一个好东西", //必须,分享内容,应提供 text 或 images 之一 content: { //文本 text: "分享一段文本内容" } }, function(succ, res) { if (!succ) { alert(json.stringify(res)) } });
jsbridge.sysshare({
title: "发现一个好东西",
content: {
//可选,一张或多张图片
images: [
"http://i.yimenyun.net/sys/1.jpg",
"http://i.yimenyun.net/sys/2.jpg",
"http://i.yimenyun.net/sys/3.jpg"
]
}
}, function(succ, res) {
if (!succ) {
alert(json.stringify(res))
}
});
弹出分享菜单,用默认值分享
jsbridge.share();
弹出分享菜单,用指定的标题分享,其他用默认值
jsbridge.share({
title: "这是自定义分享标题(未指定则为网页标题)"
}, function(succ) {
alert(succ ? "分享成功" : "分享失败");
});
指定了 to 参数,不会弹出分享菜单,直接呼出对应的app完成分享
jsbridge.share({
//0 微信朋友圈
//1 微信好友
//2 qq好友
//3 qq空间
to : 0,
title : "可以指定标题",
link : "https://m.baidu.com",
imgurl: "http://i.yimenyun.net/sys/logo.png",
desc : "摘要:内事问百度,外事找谷歌,你懂的。"
});
当点击原生标题栏上或功能面板上的分享按钮时调用,跟微信公众号内的分享接口用法相同。
参数为 json 数据类型
onmenusharetimeline 当分享到微信朋友圈时
onmenusharefriend 当分享到微信好友时
onmenushareqq 当分享到qq好友时
onmenushareqzone 当分享到qq空间时
jsbridge.onmenusharetimeline({
title : "自定义的标题",
link : "http://www.zhidianwl.com/doc/",
imgurl: "http://i.yimenyun.net/sys/logo.png",
desc : "自定义的摘要内容",
success: function() {
alert("分享成功");
},
cancel: function() {
alert("取消了分享或分享失败");
}
});
alert("已设置,请点击分享到朋友圈试试。");
当点击原生标题栏上或功能面板上的分享按钮时调用,注意参数为 function 函数。
参数为 function 函数
onmenusharetimeline 当分享到微信朋友圈时
onmenusharefriend 当分享到微信好友时
onmenushareqq 当分享到qq好友时
onmenushareqzone 当分享到qq空间时
jsbridge.onmenusharetimeline(function(){
//这是点击分享到朋友圈时需要执行的函数
//可以做分享网页、图片、文字、多图等任何事情
alert("你点击了分享到微信朋友圈按钮");
});
alert("已设置,请点击分享到朋友圈试试。");
分享纯文字到微信好友或微信朋友圈
结果回调 callback: function(succ) { }
jsbridge.sharetext({
//to: 0 微信朋友圈, 1 微信好友
text: "纯文字分享...文本内容"
}, function(succ) {
alert(succ ? "分享成功" : "分享失败");
});
分享纯图片,不支持qq空间
结果回调请参考sharetext
jsbridge.shareimage({
//0 微信朋友圈
//1 微信好友
//2 qq好友
//to : 0,
imgurl: "http://i.yimenyun.net/sys/1.jpg"
});
分享音乐(音频),不支持qq空间
结果回调请参考sharetext
jsbridge.sharemusic({
//0 微信朋友圈
//1 微信好友
//2 qq好友
//to : 0,
title: "音乐分享标题",
desc : "可以写一点描述",
//图片链接
imgurl: "https://i.yimenyun.net/sys/logo.png",
//点击跳转的链接
targeturl: "https://m.baidu.com/",
//音乐链接
musicurl: "https://i.yimenyun.net/sys/music.mp3",
//封面
songalbumurl: "https://i.yimenyun.net/sys/1.jpg",
//歌词
songlyric : "hello lyric"
});
分享视频(仅支持微信)
结果回调请参考sharetext
jsbridge.sharevideo({
//0 微信朋友圈
//1 微信好友
//to : 0,
title: "视频分享标题",
desc : "可以写一点描述",
//图片链接
imgurl: "http://i.yimenyun.net/sys/logo.png",
//视频链接
videourl: "http://flv3.people.com.cn/dev1/mvideo/vodfiles/2017/08/08/992bfdfef09d80e809cede9c9dd04916_c.mp4"
});
jsbridge.sharewxminiprogram({
//微信小程序 原始id
username: "gh_fa2c1baa7833",
//小程序页面路径
path : "",
//标题
title : "分享的标题",
//描述文字
description: "描述文字",
//是否使用带 shareticket 的分享
withshareticket: false,
//类型,0正式版,1测试版,2体验版
programtype: 0,
//封面缩略图,需以 http 或 https 开头
thumbimage: "http://i.yimenyun.net/sys/4.jpg",
//兼容低版本微信客户端的网页链接
webpageurl: "http://www.zhidianwl.com/"
});
一键分享多张图片到微信朋友圈、qq空间等
结果回调 callback: function(succ) { }
jsbridge.shareimages({
text : "这是一小段多图分享的说明文本\n https://m.baidu.com/",
images: [
"http://i.yimenyun.net/sys/1.jpg",
"http://i.yimenyun.net/sys/2.jpg",
"http://i.yimenyun.net/sys/3.jpg",
"http://i.yimenyun.net/sys/4.jpg",
"http://i.yimenyun.net/sys/5.jpg",
"http://i.yimenyun.net/sys/6.jpg",
"http://i.yimenyun.net/sys/7.jpg",
"http://i.yimenyun.net/sys/8.jpg",
"http://i.yimenyun.net/sys/9.jpg"
]}, function(succ) {
//仅苹果版支持回调分享结果
if (succ) {
alert("发送成功");
} else {
alert("失败或取消了");
}
});
图片相关
多张组图浏览,支持横竖屏自适配、手势缩放、批量保存到相册、一键分享朋友圈;
可配置双击屏幕自动触发多图浏览,无需调用js接口。
jsbridge.showimages({
//屏幕方向 0自适应,1横屏,2竖屏
screenorientation: 0,
//显示保存到相册按钮
save: true,
//显示一键分享多图按钮
share: true,
//多图分享摘要文字
share_text: "webapp快捷打包 多图分享摘要",
//当前页显示第几张(从0开始,默认0)
startindex: 2,
//自动滚动播放延时毫秒数,0 则不自动滚动
autoscrollinterval: 5000,
//图片组, text 是文字说明
items:[
{
url :"http://i.yimenyun.net/sys/1.jpg",
text:"美丽的大自然 01"
},
{
url :"http://i.yimenyun.net/sys/2.jpg",
text:"美丽的大自然 02"
},
{
url :"http://i.yimenyun.net/sys/3.jpg"
},
{
url :"http://i.yimenyun.net/sys/4.jpg"
},
{
url :"http://i.yimenyun.net/sys/5.jpg"
},
{
url :"http://i.yimenyun.net/sys/6.jpg",
text:"美丽的湖泊"
},
{
url :"http://i.yimenyun.net/sys/7.jpg"
}
]
});
图片链接:
//以 http:// 或 https:// 打头的图片链接
jsbridge.saveimagetoalbum("{{saveimagetoalbum1.url}}", function(succ) {
alert(succ ? "保存成功" : "保存失败:下载失败或没有相册使用权限");
});
保存图片 base64 url 到相册。
//图片 base64 url
jsbridge.saveimagetoalbum("data:image/png;base64,ivborw0kggoaaaansuheugaaaqaaaaeacamaaabrrfhuaaaabgdbtueaak/inwwk6qaaabl0rvh0u29mdhdhcmuaqwrvymugsw1hz2vszwfkexhjztwaaabxuexurf///xkw2/d4/dlr kxx8yjk7r c3scc3ehy 2q96gu96d2p4t6p4cpl9rte9eyw5inl7s j33nd61u25pbr702w5c6i31y35qby8nre65fr77xe9mtl9v4l57aaaaussurbvhja7jzreqmgeiyvt0fjpmak7d7/dw667sqo8swm r0/22eim8b8awkwbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0mplt5qg9/s9tdonm8/ueb6mxqzh vnnyqbzzzcwje4fx9nmvz7usmuwpg0lans 7d6ccdqgx 24/fj4mnpct/t9 ilbotcyl2flzr77/wjfhoasjhgaeyjnzo/tf4jr9/9lgyf11he3j9fps5zom7tvpnphlbcnkswiyzxnngxcuv53o3guec94kvg946dubkxhm/wk4d 2sdq1pjr9rvj7vrnyye5ztioq/rzhtrv5/aiu66y4r t/x0nmqkfu/ryn9lsvlu8/v//ahv3frefhutwmhor 83dk5/mtycdkcen77yw57qhi/icdr8fkefyvsvsdndtjxohd6i5/vxyrsv4uwfmrr0qfbb4q/i/ge2dc9blfxenlhiajd6l6x6e0dmu7/nutdixek9px323eqpxamru00y8ngpanzy1m/rvm9l/uza9xm31en50nojigmvqfz8mbqm ey2dxammggqdfpmo6lb15dgwtqccybf1yct3c2q2rr09giqbenccuyzrp/nmdu3cbajndfsxpgfie3dvbdwhlggsz bi2joh0gbogjfu na4xilrpghyqwfrqizhufbjsswd4vzjuxsb/ta5up7js0/m6ajuz5dr04kjpbahjqo eom7g vperdua/yussp2jqxx11/ybsnq/olk2k0ia9gmahuuptioa3qkejqb030jdpvygcviiqklvbsojuqfe2maljeylylstzxkzc9qfkvf94fzxppxnls50pqdd6wgupqeyu1kruth6xgcnsibylfartuz18o10 9 maaufiwetqakktld5sbr5hexgcznx0au8w5f6dqvbdfliwyonzeru7vd42prmyd04qvcr1fww5nlanwuoyynnbuq0/lcuvtjb8fixi2pvpkxclpt9ch4v/y3w7px01gwcitbm2vjzjuymavdjgpls3lav /p/pbhtvpot7xugpdmuhnhy33j8frfo/pfjnzgqnkx7 /tpz6n0xxrya5xgtakmgb ee1efo7d/qdf/yqvvlnkgxls5xm0ehemqj43fkd3p y9jwcahmqrdwy5lmrcbbmp3fm wuvzfjsb2hxvfq4m0/zcjsjucury5/rcoq31u8yuf4ueqay5tedvwczkmbrpyv4r4nhathepxc3dleplnzvpldxlkljgiaeu6im1jvyu4lkhcnpfdsf5ullfibyg7vh/rl79boxtx h8zekhawjk0up7aeec9d zmna5nll hgmceheryz6z/y xquzoqf50iljjdsf6m9n zhlqbyflxicbsoztkz3j/w3i4ybnyfpkblsm5/vnd d9ldo8if21kmqjdl6oerv6gett7ozruzduu/y05fdozvr1k/jorqmzav wl1eh8h5fdj8pjxyccxzacivjxhnl/qtk8qvy18d5eqjk/0jow/xj4zplre4ty lvtlz60/a0vbd tbfbi70o5tov7lsnmnqam3g8civkxnml/lhyeq/6g5jdg7nffcngo evm/jbek3xmotyf/lurv55gzdohtufwtv8boetwackn2/qzixy61qm53swaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibl/bvgapbljax1p/ajaaaaaelftksuqmcc", function(succ) {
alert(succ ? "保存成功" : "保存失败:转码失败或没有相册使用权限");
});
保存图片 base64 内容到相册。
//图片 base64 内容
jsbridge.saveimagetoalbum("ivborw0kggoaaaansuheugaaaqaaaaeacamaaabrrfhuaaaabgdbtueaak/inwwk6qaaabl0rvh0u29mdhdhcmuaqwrvymugsw1hz2vszwfkexhjztwaaabxuexurf///9gebv3w7/ju0pcqoeuogtorfnosffri3 zxyt9hm dyy99inpxgwpo4sofvq ypg l/ct06je6ckerju jwrnw5jorkvpgroumac 6dkvo5sfbhwrbslveaaaussurbvhja7jzreqmgeiyvt0fjpmak7d7/dw667sqo8swm r0/22eim8b8awkwbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0mplt5pg9/s9tdonm8/ueb6mxqzr vnnyqbzzyiwje4fx9nmvz7usmuepq0lans 7d6cadqgx 24/fj4mnpct/t9 ilbotcyl2flzr77/4jehoasjrgaeyjnbo/tf4jr9/9lgyf11he3j9fps5zom7tvpnphlbcnkseiyzxpngxcuv53o3gyec94kvg946dubkxhm/wk4d 2sdg1pjr9rvj7vpnyye5rtooq/xzhtrv5/biq66y4q t/x0nmqkfu/ryn9luvlu8/v//ahv3lrefhutwmhor 83dk5/mtycdkcen77yw57qhi/icdr8fkefyvsvsdndtjxohd6i5/vxirsv4uwfmrrwqfbb4q/a/he2dc9blfxenlhiajd6l6x6e0dmu6/nutdixek9hx323eqphamru00y8nghanzy1m/rvm9l/uza9xm31en50nojigmvqfz8mbqm ey2dxammggqdlpmo6lb15diwtqcdybf1yct3c2q2rr09oiqbenccuyzrp/nmdu3cbajndfsxpgfie3dvbdwhlggsz bi2dol0gbogjfu na4xilrpghyqwfrqizhufbjcswd4vzjuxsb/ta5up7js0/m6ajuzzdr04kjpbahjqo eom7g vperdua/yusup2jqxx11/ybsnq/olk2k0ia9gmahuuptioa3qkejqb030jdpvyicviiqkfvbsonuqfe2maljeylylstzxkzc9qfkvf94ezxppxnls51pqdd6wgupqeyu1kruth6xgcnsibylfartuz18g11 9 maaufiwetqakktld5sbr5hexgcznx0au8w5f6dqvbdfliwyonzeru7vd42prmyd04qvcr1fww5nlanwuoyynnbuq0/lcuvtjb8fixi2pvpkxclpt9ch4v/y3w7px01gwcitbm2vjzjuymavdjgpls3lav /p/pbhtvpot7xugpdmuhnly33j8frfo/pfjnzgqnkx7 /tpz6n0xxrya5xgtakmgb ee1efo7d/sdf/yqvvlnkgwrs5xm0ehemqj43fkd3p y9jwcahmqrdwy5lmrcbfmp3fm wuvzfjsb2hxvfq4m0/zcjsjucury5/rcoq31u8yuf4ueqay5tedvwczmmbbpyv4r4nhathepxc3dlellnzvpldxjkljgiaeu6im1jvyu4lkhcnpfdsf5ullfibyg7vh/rl79boxtx h8aekhawjk0up7aeec9d zmni5mll hgmceheryz6z/y xquzoqf50iljjdsf6m9n zhlqbyflxicbsoztkz3j/w3i4ybnyfpkblsm5/vnd d9ldo8if20kmqjdl6oerv6gett7ozruzduu/y05fdozvr1k/jorqmzav wl1eh8h5fdj8pjxycc5zacivjxhtl/qtk8qvy18d5eqjk/wjow/xj4zplre4ty lvtlz60/a0vbd tbfbi70o5tov7lunmnqam3g8cifkxnml/lhyeq/6g5jdg7nffcngo evm/jbek3xmotyf/lurv56gzdohtufwtv8boetwackm2/qzixy61qm53swaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaibl/bvgahytjawap/udaaaaaelftksuqmcc", function(succ) {
alert(succ ? "保存成功" : "保存失败:转码失败或没有相册使用权限");
});
批量保存图片到相册。
//图片链接或base64图片数组
jsbridge.saveimagestoalbum([
"http://i.yimenyun.net/sys/1.jpg",
"http://i.yimenyun.net/sys/2.jpg",
"http://i.yimenyun.net/sys/3.jpg",
"http://i.yimenyun.net/sys/4.jpg",
"http://i.yimenyun.net/sys/5.jpg"
], function(succ) {
if (succ) {
jsbridge.toast("已保存");
} else {
alert("保存失败:下载失败或没有相册使用权限");
}
});
保存 web 截屏图片到相册(仅截取 web 浏览窗口)。
jsbridge.savescreenshottoalbum(function(succ) {
alert(succ ? "保存成功" : "保存失败:没有相册使用权限");
});
//链接请以 http:// 或 https:// 开头
jsbridge.savevideotoalbum("http://cdn.myapp.ltd/sys/sunflower.mp4", function(succ) {
alert(succ ? "保存成功" : "下载失败或没有相册使用权限");
});
扫一扫
缓存/cookie
获取缓存大小
jsbridge.cachesize(function(size) {
var txt = size "字节\n";
txt = (size / 1024 / 1024.0).tofixed(2) "mb";
alert(txt);
});
清除缓存
jsbridge.clearcache(function() {
alert("缓存已清除");
});
清除 cookie
jsbridge.clearcookie();
alert("cookie 已清除");
前进/后退
检查是否可以执行 history.forward()
jsbridge.cangoforward(function(can){
alert(can);
});
检查是否可以执行 history.back()
jsbridge.cangoback(function(can){
alert(can);
});
一键返回5845vip威尼斯电子游戏首页,无论当前处于多少层级的子页面。
// 参数 true: 同时跳转到5845vip威尼斯电子游戏首页链接, false: 不跳转链接 jsbridge.backtohome(true);
消息推送/通知
腾讯
百度开放平台
高德地图
app 信息
jsbridge.appsettings();
jsbridge.appdownloads();
获取app安装id,升级安装不会变,卸载app重新安装会改变。
jsbridge.appinfo(function(info){
//返回json类型
/**
{
appid :123, //打包平台 app id
appver :101, //版本号
appvername :1.0.0, //版本名
appname :"app名称",
url :"http://...打包网址",
packagename :"com.xxx.yyy", //包名
platformver :26, //平台版本号
devicename :"设备名称",
resolution :"1080x1920", //屏幕分辨率
deviceid :"不推荐,请使用 getimei/getoaid 接口",
installid :"安装id,卸载app重装会变",
certmd5 :"应用md5签名,仅安卓端",
certsha1 :"应用sha1签名,仅安卓端"
}
**/
alert(json.stringify(info));
});
• 进入系统设置项目,设置服务状态;
• 部分开关功能可以先调用 getsettingstate 接口检查设置项的开关状态;
• 选择一项运行测试:
/**
整形参数
0 系统设置(默认)
1 定位
2 wifi无线网络
3 蓝牙
4 显示
5 声音/震动
6 通知
7 语言
**/
jsbridge.opensetting(0);
• 选择一项运行测试:
/**
整形参数
1 定位 - 是否启用gps定位
2 定位 - 是否启用网络定位
3 蓝牙服务
6 通知
**/
jsbridge.getsettingstate(1, function(on) {
alert(on ? "已开启" : "已关闭");
});
/**
回调参数 on, 布尔类型,指示开关状态
true : 已开启
false: 已关闭
**/
• 获取移动设备识别码 imei/meid,需要 read_phone_state 隐私权限;
• 多个 imei/meid 用逗号(,)分隔,拨号输入 *#06# 可查看;
• android 10 不能获取 imei,此接口返回 android id;
• 仅支持安卓,苹果版推荐使用 getidfa。
jsbridge.getimei(function(imei){
if (imei) {
alert(imei);
} else {
alert("获取失败或没有权限");
}
});
• 详情请参考 官方说明;
• 除了各厂家较老的安卓系统基本都支持,可配合 getimei 使用;
• 仅支持安卓,苹果版推荐使用 getidfa。
jsbridge.getoaid(function(oaid){
if (oaid) {
alert(oaid);
} else {
alert("获取失败或此设备不支持");
}
});
• 获取广告标识符 idfa;
• 设置 - 隐私 - 跟踪,设置跟踪开关;
• 仅支持苹果,安卓版推荐使用 getimei / getoaid;
jsbridge.getidfa(function(idfa){
if (idfa) {
alert(idfa);
} else {
alert("没有权限或已限制跟踪");
}
});
• 由于隐私限制,此设备id已不可靠。
• 安卓推荐使用 getimei getoaid
• 苹果推荐使用 getidfa
jsbridge.getdeviceid(function(id){
alert(id);
});
获取app安装id,升级安装不会变,卸载app重新安装会改变。
jsbridge.getinstallid(function(id){
alert(id);
});
用户按主屏home键,有电话拨入等, app被推到后台时触发。
jsbridge.onappenterbackground(function(){
console.log("enter background");
});
alert("已设置,请按主屏home键再打开app。");
当app被激活,回到前台时触发。
jsbridge.onappenterforeground(function(){
alert("enter foreground~~")
});
alert("已设置,请按主屏home键切换app。");
获取设备配置的摄像头数量和类型
jsbridge.checkcamera(function (result) {
alert(json.stringify(result));
});
/*
result 返回参数:
{
count: //摄像头数量,int 类型
front: //是否有前置摄像头,bool 类型
back : //是否有后置摄像头,bool 类型
}
*/
//请求 相机、写相册 权限
jsbridge.requestpermissions([ "camera", "writephotos" ], function(result) {
if (result.granted) {
alert("已授权");
} else {
alert("已拒绝,不再询问: " result.neveraskagain);
}
});
/*
参数说明:
权限,字符串数组,一次可以申请单个或多个权限:
readphotos 读取相册
writephotos 写入相册
camera 相机
microphone 麦克风
location 定位
readcontacts 读取联系人
writecontacts 写入联系人
bluetooth 蓝牙
readphonestate 手机设备信息(仅支持安卓)
回调函数 result 参数说明:
{
granted : 布尔类型,是否已获得请求的全部权限
neveraskagain: 布尔类型,如果拒绝了,用户是否勾选了 “不再询问”
}
注意:如果 neveraskagain == true ,再次 requestpermissions 请求隐私权限时 app 不会弹出授权提示框,此时你需要提示用户进入手机系统设置手动开启权限。调用 jsbridge.appsettings() 可以直接打开本 app 的系统设置界面。
*/
//请求定位权限
jsbridge.requestpermissions([ "location" ], function(result) {
if (result.granted) {
alert("已授权");
} else {
alert("未授权,不再询问: " result.neveraskagain);
}
});
阿里百川
新浪微博
蓝牙(ble)
传感器
ios内购(in-app purchase)
多屏异显
音视频
网络
融云 - im即时通讯与音视频通信
今日头条/巨量引擎/字节跳动
海外
移动应用统计
无需代码集成,申请接入 https://mtj.baidu.com/
无需代码集成,申请接入 https://mta.qq.com/mta/ctr_index/census
其他第三方sdk
打印/扫描/智能终端
其他
jsbridge.toast('hello, app.');
jsbridge.vibrate();
jsbridge.showsplash();
jsbridge.home();
//退出,不结束app进程 jsbridge.exit();
//布尔参数,退出app后是否需要结束进程,默认 false jsbridge.exit(true);
//重启应用 //仅支持 android 10 以下系统 //android 10 及以上相当于 jsbridge.exit(true); 需要手工启动应用 jsbridge.restart();
发起网络访问请求,原生网络请求,性能高,也不会有 ajax 跨域限制问题
jsbridge.net({
url: "http://www.zhidianwl.com/doc/echo.cshtml",
method: "post",
params: {
name: "world"
},
indicator: true
}, function (succ, text) {
if (succ) {
alert("服务器返回的字符串\n\n" text);
} else {
alert("网络访问请求失败");
}
});