yangbo5207 / everyday

Something I learn every day.
5 stars 0 forks source link

tongshuashuen app share 使用 #67

Open yangbo5207 opened 7 years ago

yangbo5207 commented 7 years ago

首先引入一个js文件

// handler.js
/**
 * @author  meiliujun <meiliujun@myhexin.com>
 * @date    14-7-21
 * @desc    webview和客户端交互协议
 * @eg      callNativeHandler(
 *              'photoforIDcard',
 *              '{"action":"photograph"}',
 *              function(data){
 *                  alert(data);
 *          });
 */

//调用客户端api
function callNativeHandler(action, data, callback) {
    if (window.WebViewJavascriptBridge) {
        if( typeof callback !== 'undefined' ){
            window.WebViewJavascriptBridge.callHandler(action, data, callback);
        }
        else{
            window.WebViewJavascriptBridge.callHandler(action, data);
        }
    }
    else{
        document.addEventListener(
            'WebViewJavascriptBridgeReady',
            function() {
                if( typeof callback !== 'undefined' ){
                    window.WebViewJavascriptBridge.callHandler(action, data, callback);
                }
                else{
                    window.WebViewJavascriptBridge.callHandler(action, data);
                }
            },
            false
        );
    }
}

//定义WEB API供给客户端使用 handlername为客户端调用web 函数的协议名字 callfunction参数为一个函数,他有两个参数msgdata和callbackfunction
function registerWebHandler(handlername,callfunction) {
    if(window.WebViewJavascriptBridge)
    {
        window.WebViewJavascriptBridge.registerHandler(handlername, callfunction);        
    }
    else{
        document.addEventListener(
            'WebViewJavascriptBridgeReady',
            function() {
                window.WebViewJavascriptBridge.registerHandler(handlername, callfunction);  
            },
            false
        );
    }
}

//定义默认事件函数
/*
function initWebViewJavascriptBridge(message, responseCallback){
    var data = { 'Javascript Responds':'Unsupported!' };
    responseCallback(data);
    responseCallback(message);
}
*/

//初始化 连接桥函数定义
function connectWebViewJavascriptBridge() {
    if (window.WebViewJavascriptBridge) {
        window.WebViewJavascriptBridge.init(
            initWebViewJavascriptBridge
        );
    }
    else {
        document.addEventListener(
            'WebViewJavascriptBridgeReady',
            function() {
                window.WebViewJavascriptBridge.init(
                    initWebViewJavascriptBridge
                );
            },
            false
        );
    }
}

//设置默认协议处理函数为console.log
if(typeof initWebViewJavascriptBridge != 'function' ){
    function initWebViewJavascriptBridge(message, responseCallback){
        console.log('message:'+message);
        console.log('callback:'+responseCallback);
    }
}

//初始化webviewbridge
connectWebViewJavascriptBridge();

使用方式

var param = {
            type: "1",
            title: "share msg",
            content: "share intro",
            bmpRes: "0",
            bmpUrl: "",
            actionKey: "mobile_share_seq_key",
            url: "shareurl"
        } 
param = JSON.stringify(param)
callNativeHandler("hexinShare", param, function() {})

字段含义:

[type] => 分享类型 1分享网页,2分享图片,3分享APP(目前不支持) 必须项 [title] => 标题或者话题 必须项 [content] => 内容或者文案 必须项 [url] => 分享网页URL地址 如果分享网页(1)和App类型(3),则必须项 [bmpRes] => 图片来源 1来自网络,2 来自客户端截图,3来自客户端默认图片,必须项 [bmpUrl] => 图片url地址,如果分享为网络图片(1),则必须项 [actionKey] => 分享内容key,用于客户端统计,一般为后台生成的活动id如mobile_share_1,必须项 可选字段 {platforms:[qq,qqzone,weixin,friends,weibo]} 没有的时候全部分享平台可用,有的时候 仅有包含的平台可以分享

举例: {"type":"1","url":"file:///C:/Users/Administrator/Desktop/share/sharepage.html","content":" 活动内容","title":"活动标题","actionKey":"1"}