Skip to content

H5 SDK 2.x

导入 SDK

七牛云 CDN

html
<script src="https://img.pikapika.ink/js/2.1.0/infzm_h5_sdk.min.js"></script>

腾讯云 CDN

html
<script src="http://images.infzm.com/js/lib/h5/2.1.0/infzm_h5_sdk.min.js"></script>

获取客户端详情

判断是否为 APP 环境、平台、版本号

javascript
    _appTool.isApp(function (res) {
      
      if(!res) return;                          //不是客户端环境
      
      if(res && res.platform === 'android') {} //安卓环境
      if(res && res.isAndroidClient) {} //安卓环境
      
      if(res && res.platform === 'ios') {} //苹果环境
      if(res && res.isiOSClient) {} //苹果环境
      
      if(res && res.version ) {} //客户端版本号
      
    })

当为客户的环境时, res 参数为对象,如果不是则返回 null

下面是 iOS 客户端返回的参数

json
    {
        "isAndroidClient": false,
        "isApp"          : true,
        "isiOSClient"    : true,
        "platform"       : "ios",
        "version"        : "6.2.0"
    }

App 版本号判断

WARNING

返回的版本号只是字符串,使用判断函数可以判读版本号

比如需要调用 6.3.2 才有的功能:

javascript
_appTool.isApp(function (res) {
  
    if(!res) return //不是客户端
    
    if(_appTool.versionCompare(res.version, '6.3.2') > -1){
       //调用 **6.3.2** 才有的功能
    }
    
})

调起原生页面

功能测试页面 http://h5.misaka.im/webview-open-page-test.php

参考 南方周末通用协议 可以取得调起原生页面的相关参数

如需要调起 订阅会员页 页:

javascript
  var type_obj = {
      'version': '1.6.0',
      'link_type': '7',
  }
  var uri = _appTool.createOpenURI(type_obj)

  _appTool.openPage(type_obj.link_type, uri)

登录页面

调出登录页面首先要在页面上判断用户是否登录,见获取用户信息相关说明

javascript
    _appTool.isLogin() //Return Boolean

分享信息设置

javascript
    //参数    分享标题 分享描述 小图标地址 分享地址
    var share_info = {
        share_title: '分享标题',
        share_desc: '分享描述',
        share_icon: 'http://images.infzm.com/medias/2018/0816/136580.jpeg@770x510',
        share_url: 'http://www.infzm.com/content/136473',
    }
    
    _appTool.setShare(share_info);

分享回调函数

WARNING

这个功能需要 iOS v6.2.5 以上版本才支持

window.JSafterShare

不支持对多个分享设置对应的回调,所以在用户分享前就要先设置好回调。

javascript
window.JSafterShare = function(state, url) {
    if (state == "success") {
        alert('用户点击了分享按钮')
    }
}

获取客户端用户信息

从 APP

==H5 活动地址请不要使用 https ,否则会因为跨域问题无法调取接口==

javascript
_appInit(function(userinfo, l) {
    //userinfo 结构如下
    //night_mode: false
    //token     : 39b7f632e526b7bbdb06bdf8abeb310a
    //version   : 5.3.0
    //hash      : 2bc8e19f6df74c4bc8fc76c4402ac271
    //user:
    //format    : json
    //platform  : android
    //userid    : 2276555
})

从服务器

javascript
_appInit(function (userinfo, l) {

  // userinfo 用于 getUserRemote

  _appTool.getUserRemote(userinfo, function (data) {
      // data 数据结构
      // avater: "http://images.infzm.com/users/2277/u2276555.jpg"
      // expire_time: "2020-03-01 00:00:00"
      // headimgurl: "http://images.infzm.com/users/2277/u2276555.jpg"
      // id: 2276555
      // isBind: true
      // isVip: false
      // member_type: 3
      // nackname: "Mather"
      // phone: "15015030288"
      // username: "Mather"

  });

})

同步调用的场景

如果你的编程环境受限,不支持异步调用,在代码中定义下面两个函数:

判断是否登录

在代码中定义下面函数:

javascript
function isLoginInApp(){
    // return true/false
    return typeof JSBinder != 'undefined' && !isNaN(Number(JSBinder.getUserId()))
}
返回值
返回值类型备注
trueBoolean在 APP 环境中
falseBoolean非 APP 环境
示例
javascript
if(isLoginInApp()) console.log('已登录')

获取用户信息

在代码中定义下面函数:

javascript
function isLoginInApp(){
    // return true/false
    return typeof JSBinder != 'undefined' && !isNaN(Number(JSBinder.getUserId()))
}

function getUserIdAndTokenInApp() {
    // return {userid: 123, token: 123456}
    // or false
    return isLoginInApp() ? { userid: JSBinder.getUserId(), token: JSBinder.getUserId() } : false
}
返回值
返回值类型备注
JSON ObjectObject见用户信息对象
falseBoolean未登录

用户信息对象

json
{
    "userid": 1234,
    "token" : "12345"
}
示例
javascript
if(getUserIdAndTokenInApp()) console.log('用户id' + getUserIdAndTokenInApp().id)