@bbtfe/native
TypeScript icon, indicating that this package has built-in type declarations

0.3.12 • Public • Published

@bbtfe/native

封装了 H5 页面与原生 APP 交互的方法

引用方式

npm 引用

npm i @bbtfe/native
import bbtNative from '@bbtfe/native';

script 引用

<script src="//h5cdn.babytreeimg.com/h5_fe_lib/release/native/0.3.12/index.js"></script>
<script src="//h5cdn.babytreeimg.com/h5_fe_lib/release/native/0.3.12/index.min.js"></script>

使用 API

App 内加载完 webview 时,会调用 pageLoadFinish 这个方法,封装到这个方法中:bbtNative.ready, 其他调用方法,都需要在 ready 方法中才能使用

bbtNative.ready(() => {
  console.log('页面加载完成,可以使用原生方法了');
});

调用原生方法:window.USER_INFO

bbtNative.userinfo;

根据 window.USER_INFO 是否返回了 login_string, 判断用户是否登录

bbtNative.isLogin();

判断是否在 APP 中,该方法不区分时光和孕育

bbtNative.isApp();

调起原生登录 nativeLogin('ask_reload_webview', 'ask_reload_webview');

bbtNative.login();

原生加密方法加密 nativeGetApiEncryption(data); 加密回调方法 window.nativeGetApiEncryptionFinishCall=function(data){}

// 参数1:object; 参数2:回调方法
bbtNative.encryptApi({ name: '' }, callback);

获取 App(孕育或时光)信息, 从加密后的参数中取到的 id 和 version , 不推荐使用这个方法

bbtNative.appinfo;

设置 Title Bar 中的标题 nativeSetTitle('Hello, Title')

bbtNative.setTitle('Hello Title');

打开新的 webview: adAction(title, url);

bbtNative.openWebview('', 'https://m.babytree.com');

关闭当前 webview: nativeWebviewClose();

bbtNative.closeWebview();

原生查看大图 nativePhotoBrowse(src)

// src为http或https协议的图片url
bbtNative.previewImage(src);

显示 Title Bar 分享按钮 showShareButton(‘yes')

bbtNative.showShareButton();

隐藏 Title Bar 分享按钮 showShareButton(‘no')

bbtNative.hideShareButton();

设置分享 Card 内容 window.share

// 调用原生分享钱,一定先设置分享card内容
bbtNative.setShareContent({
  url: '',
  title: '',
  content: '',
  imageUrl: '',
  onShared: (tyhpe, status) => {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

设置分享 Card 内容 window.share 新增了 isSame 参数,注意区分传参

// 0.2.0新增参数:isSame为true时,参数需完全按照原生的参数传入
bbtNative.setShareContent({
  isSame: true, // 0.2.0新增参数:isSame为true时,参数需完全按照原生的参数传入
  share_url: 'http://m.babytree.com/community/group42064/topic_49220389.html',
  share_title: '分享share_title',
  share_content: '分享share_content',
  image_base64:
    'http://pic02.babytreeimg.com/foto3/thumbs/2015/1208/31/3/29008e5535dd2f064d04d9_ss.jpg',
  onShared: function (type, status) {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

设置分享图片

// 方法1
bbtNative.setShareContent({
  type: 'picture',
  imageBase64:
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAUCAYAAABbLMdoAAAABGdBTUEAALGPC/xhBQAAAKhJREFUKBWN0jEOwyAMBVCM2DP1FD1Cpg4MjDlpp4oxU46QU3TqjkT9URQJxQ72EEXifQthU4zx45ybQghLzvnL/2p5PplqrXMpZU0pPVTJBx4diWjnwHMUIHRCR0AEEOQGL+lKDVsDJ7YEOjwKXPBdQMRaQMVCYMNQzKV2lt5exBLEkC5Yg7hrh+9gh0fwxBbYsBUCe17N92g1AVEYyo93eNN2uKnj8wf21sSNpp2ADAAAAABJRU5ErkJggg==',
  onShared: function (type, status) {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

// 方法2
bbtNative.setShareContent({
  isSame: true,
  share_type: 'shareSinglePicture',
  image_data_base64:
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAUCAYAAABbLMdoAAAABGdBTUEAALGPC/xhBQAAAKhJREFUKBWN0jEOwyAMBVCM2DP1FD1Cpg4MjDlpp4oxU46QU3TqjkT9URQJxQ72EEXifQthU4zx45ybQghLzvnL/2p5PplqrXMpZU0pPVTJBx4diWjnwHMUIHRCR0AEEOQGL+lKDVsDJ7YEOjwKXPBdQMRaQMVCYMNQzKV2lt5exBLEkC5Yg7hrh+9gh0fwxBbYsBUCe17N92g1AVEYyo93eNN2uKnj8wf21sSNpp2ADAAAAABJRU5ErkJggg=='.replace(
      /^data:image\/(?:jpeg|jpg|png|gif);base64,/,
      ''
    ),
  onShared: function (type, status) {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

设置分享小程序

bbtNative.setShareContent({
  isSame: true,
  share_type: 'knowledge',
  mini_username: 'gh_b52a0b058b71',
  mini_path: '/pages/knowview/index?id=7260',
  mini_img_url:
    'http://pic02.babytreeimg.com/foto3/thumbs/2015/1208/31/3/29008e5535dd2f064d04d9_ss.jpg',
  onShared: function (type, status) {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

打开分享面板 shareAction()

// 需传参 onShared回调方法,才可以成功调用分享成功事件
// 右上角的原生分享按钮,也需传参onShared回调才生效;
bbtNative.share({
  onShared: (tyhpe, status) => {
    console.log(
      '分享成功回调方法的返回值:type:' + type + '; status: ' + status
    );
  }
});

直接分享到不同的端 原生方法:window.shareSinglePlatform('qq'); ios 调用分享到不同的端,需要先获取安装了哪个能分享的端: window.installSharePlatform = function (data) { window.sharePlatform = data; //返回值'wxsession,wxtimeline,qq,qzone,sina' };

// 微信,朋友圈,qq,空间,微博
// wxsession, wxtimeline, qq, qzone, sina
bbtNative.share({
  target: 'wxsession'
});

网页拨打电话 nativeCallByNumber('15...')

bbtNative.call('+86 10 6113 8080');

从本地上传照片,返回 photoid 和 url, 原生方法 catchPhoto('', '', '') 回调方法:window.catchPhotoFinishCall = function (tag, photo_id, middle_url) {}

bbtNative.catchPhoto({
  callback: function (data) {
    console.log('catchPhoto回调:', data);
  }
});

将照片上传到七牛,最少一张,最多 9 张, 原生方法:uploadPhoto

bbtNative.uploadPhoto({
  max: 5,
  callback: function (data) {
    console.log('upload-photo:上传七牛照片', JSON.parse(data));
  }
});

通过 uri 启动页面 openScheme

bbtNative.openScheme({
  scheme: 'bbtrp://com.babytree.pregnancy/home/homepage', // 跳转路由
  callback: function (res) {
    // 成功的回调
    console.log('打开页面:', res);
  }
});

二维码扫描来绑定用户 openQRScanner4BindUser()

bbtNative.openQRScanner4BindUser(function (state, url) {
  console.log('扫描二维码绑定用户', state, url); // 返回state和url字段
});

与客户端同步绑定关系 updateBindUserStateSuccess('1')

// 用户接受绑定成功'1'、解绑成功'2'、删除宝宝'3'
bbtNative.updateBindUserStateSuccess('1');

获取设备信息 getDeviceInfo()

bbtNative.getDeviceInfo(function (res) {
  console.log(res.result);
});

将 base64 位编码的图片下载到本地相册 downloadBase64ImageToNativeAlbum(base64)

bbtNative.downloadBase64ImgToAlbum(base64, function (res) {
  console.log(res);
});

通知客户端更新任务状态 updateRemindTaskStatus(id, status)

bbtNative.updateRemindTaskStatus('1', 1);

在 app 中打开小程序 openMiniProgram(mini_path,mini_username)

bbtNative.openMiniProgram(
  'pages/details/index?id=3333&share=1',
  'gh_7446aad5912f'
);

获取阿里 ab 桶信息 客户端方法:getAliABTest() 回调方法: window.getAliABTestCallBack=function (type, sampleId) {} // type:试验号;sampleId:桶号

bbtNative.getAliABTest(function (type, sampleId) {
  console.log('获取阿里分桶信息', type, sampleId);
});

加入主题弹框 launchAddThemePage(contentId,contentType,status)

// 参数都string类型
// contentId : 内容id
// contentType : 内容类型 1-达人文章 2-帖子 3-知识 4-问答 5-专家答 6-妈妈看 7-专家开讲 8-关注人发布文章 9-关注人发布帖子 10-关注人回答问题 11-关注人转发文章 12-关注人转发帖子 13-关注人转发知识 14-关注人转发问答 15-首页达人 16-主题主页可能感兴趣的人
// status: '0'未收藏;'1'已收藏   //8.8.0加的这个参数
bbtNative.launchAddThemePage(contentId, contentType, status);

相关主题弹框 launchRelativeThemePage(contentId,contentType) // 参数都 string 类型 // contentId : 内容 id // contentType : 内容类型 1-达人文章 2-帖子 3-知识 4-问答 5-专家答 6-妈妈看 7-专家开讲 8-关注人发布文章 9-关注人发布帖子 10-关注人回答问题 11-关注人转发文章 12-关注人转发帖子 13-关注人转发知识 14-关注人转发问答 15-首页达人 16-主题主页可能感兴趣的人

bbtNative.launchRelativeThemePage(contentId, contentType);

评论模块交互方法 原生方法 ios:nativeLaunchReply(option); 原生方法 android: nativeLaunchReply(JSON.stringify(option)); 回调方法:window.nativeLaunchReplyCallBack = function (opt) {}

bbtNative.nativeLaunchReply(
  {
    type: 'post', //String, 发送请求的方式:post || get
    maxlength: 200, //int, 最多输入字数
    placeholder: '请输入评论内容', //String
    value: '这里传入点击取消时,输入框中的文案', //String  客户端还未实现,备用
    url: '/app/pregnancy/knowledge/create_comment_ajax', //api请求地址
    contentName: 'content', //评论发布框中发布内容的key值
    data: {
      questionId: 1, //int
      answerId: 1, //int
      replayId: 1, //int
      knowledge_id: '',
      login_string: ''
    }, //data,   api需要传的参数都放到这里,不需要的不放
    expression: 0, //int; 1,可发表情;0,不可发表情
    img: 0, //int; 1,可发图片;0,不可发图片
    audio: 0 //int; 1,可发音频;0,不可发音频
  },
  function (opt) {
    console.log('评论成功回调', opt);
    /*	
	// opt = {
		// status: '',  //1,ajax成功;2,ajax失败;3,取消
		// text: '',   //输入框中的内容
		// json: '' //ajax返回来的json
	// }
	*/
  }
);

获取美囤 token: getMeitunToken()

bbtNative.getMeitunToken(function (res) {
  console.log('获取美囤token', res);
});

获取地理位置信息 客户端方法:nativeLocation() 回调方法:window.nativeLocationCallBack = function ({status,longitude,latitude}) {}

// status: 是否开启定位的js方法, 1已开启,0未开启
// longitude: 经度
// latitude:纬度
// 返回参数都是字符串
bbtNative.nativeLocation(function ({ status, longitude, latitude }) {
  console.log('获取地里位置', status, longitude, latitude);
});

会客厅好运卡弹窗 nativeLuckPopup({data}) // data:好运卡数据对象

8.11.0 版本及以后,修改为 3 个参数 nativeLuckPopup(data, status, uid) data:好运卡数据对象; status: 字符串,1,自己;2,他人;
uid:字符串, 被访问者的 uid, 用于跳转到其他会客厅页面的时候,追加到 url 后面&uid=

// 封装的方法bbtNative.nativeLuckPopup, 只支持8.11.0及之后版本
bbtNative.nativeLuckPopup({ data: {}, status: ''2, uid: '' });

获取美囤收货地址 客户端方法:openMeitunReceivingAddress() 回调方法:window.openMeitunReceivingAddressFinish = function(data){}

bbtNative.openMeitunReceivingAddress(function (res) {
  console.log(res);
});

是否侧滑返回 客户端方法:nativeSwipeBack(status); status: 0 禁止

bbtNative.客户端方法:nativeSwipeBack(status);

会客厅项目中获取邻居的信息 客户端方法:getNeighborInfo(value1, value2); 回调方法:window.nativeNeighborCallBack = function(res) {} value1: "1" value2: "2"

bbtNative.getNeighborInfo(value1, value2, function (res) {
  console.log(res);
});

刷新客户端爱心值数据 客户端方法:nativeUpdateEnergy(value, id) value: 收取的爱心值 id: 访问者 uid

bbtNative.nativeUpdateEnergy(value, id);

关闭所有会客厅相关页面 客户端方法:nativeParlorClose()

bbtNative.nativeParlorClose();

知识收藏互通方法 客户端方法:nativeCollectStatus('0'); 参数 string 类型 status: '0'未收藏;'1'已收藏 回调方法:nativeCollectStatusCallBack(status) = function () {}

// status:string; callback: 回调方法
nativeCollectStatus(status, callback);

获取 cms 分桶信息 客户端方法:getCmsABTest() 回调方法:window.getABTestCallBack = function(isCms){} isCms: 0,非新框架,1,新框架

bbtNative.getCmsABTest(function (isCms) {
  console.log(isCms);
});

孕育百科关键字弹层 客户端方法:nativeGetEncyclopedia(id); id: 知识中关键字点击 id 回调方法:window.nativeGetEncyclopediaFinishCall = function(id, title, content){}

bbtNative.nativeGetEncyclopedia(id, function (id, title, content) {});

视频播放 客户端方法:videoPlay(id) id:参数是 cc 视频 id 或者七牛视频 url

bbtNative.videoPlay(id);

以下方式是 0.2.1 新增方法

跳转妈妈看详情页 客户端方法:motherWatchAdAction(id, url) 参数:(String shareId, String url)

bbtNative.motherWatchAdAction(id, url);

打开本地工具 客户端方法:openNativeTool(type, name, url) 参数:(int type, String name, String url)

bbtNative.openNativeTool(type, name, url);

H5 页面插入阿里推荐视图 客户端方法: loadWebViewATAD(type, id) @param pageType 视图类型 @param divId 往该 div 位置插入

bbtNative.loadWebViewATAD(type, id);

以下方式是 0.2.2 新增方法

获取网络信息 客户端方法:nativeGetNetState()

bbtNative.nativeGetNetState();

点赞点踩 素材位 id(int)、内容类型(int)、内容 id(String),素材位 id 目前测试环境我创建了 478(踩)和 477(赞> )用来测试,线上会不一样,内容类型(1 是文章。2 是知识。3 是工具。4 是帖子),内容 id 就是相应的 id nativeBafFBFeedBack(materialId, contentType, contentId) 客户端方法: nativeBafFBFeedBack(materialId, contentType, contentId) @param 素材位 id(int) @param 内容类型(int) @param 内容 id(String)

bbtNative.nativeBafFBFeedBack(materialId, contentType, contentId);

分享小程序 客户端方法:window.shareWeixinMini(mini_title, mini_id, mini_path, share_url, share_imgUrl);

bbtNative.shareWeixinMini(
  mini_title,
  mini_id,
  mini_path,
  share_url,
  share_imgUrl
);
// mini_title:  {string} 分享标题,默认值为document.title
// mini_id:  {string}  必传,小程序的id
// mini_path:  {string}  要跳转的小程序的url
// share_url:  {string}  分享的h5的url,为了兼容不支持小程序的旧版本微信,如果没有对应h5,就传空字符串
// share_imgUrl:  {string}  分享图片的url

音频相关方法

音频回调方法 音频播放状态方法, 客户端调用前端方法:window.nativeResponseAudioStatus 音频播放进度方法, 客户端调用前端方法:window.nativeResponseAudioProgress

bbtNative.nativeAudio.init({
  audioStatusCB: ({ audio_flag, id, type, path, status }) => {
    console.log(audio_flag, id, type, path, status);
  },
  audioProgressCB: ({
    audio_flag,
    id,
    type,
    path,
    progress,
    position,
    duration
  }) => {
    console.log(audio_flag, id, type, path, progress, position, duration);
  }
});

音频相关操作方法

加载音频方法 客户端:window.nativeAudioLoad(audio_flag, audio_list, position);

bbtNative.nativeAudio.load(audio_flag, audio_list, position);

播放音频方法 客户端:window.nativeAudioPlay(audio_flag, audio_list, position);

bbtNative.nativeAudio.play(audio_flag, audio_list, position);

暂停音频方法 客户端:window.nativeAudioPause(audio_flag, id, type, path);

bbtNative.nativeAudio.pause(audio_flag, id, type, path);

音频进度调整方法 客户端:window.nativeAudioSeek(audio_flag, id, type, path, position);

bbtNative.nativeAudio.seek(audio_flag, id, type, path, position);

隐藏当前页面的悬浮窗方法 客户端:window.nativeAudioWindowHide();

bbtNative.nativeAudio.hideAudioWindow();

显示当前页面的悬浮窗(如果有悬浮窗可以展示的话) 客户端:window.nativeAudioWindowShow();

bbtNative.nativeAudio.showAudioWindow();

检测当前业务的播放状态 , 客户端收到后会回调函数:nativeResponseAudioStatus 客户端:window.nativeAudioCheckStatus(audio_flag);

bbtNative.nativeAudio.checkStatus(audio_flag);

使原生音频视频失去焦点 客户端:window.nativeAudioFocusLoss();

bbtNative.nativeAudio.focusLoss();

设置本地 push 客户端: window.nativePushAction(config); 前端的使用

window.bbtNative.nativePushAction({
  config: {
    id: 'goodluck', //本地push的ID 唯一
    push_action: '1', //本地push开关 1 开 0关
    time: time, //时间戳
    title: '每日好运', //push标题
    content: '赶紧去领取今日的日签吧!', //push 内容
    url: 'bbtrp://com.babytree.pregnancy/home/homepage', //路由
    repeat_type: '1' //是否每天重复
  },
  callback: () => {
    window.bbtNative.closeWebview();
  }
});

获取本地 push 客户端: window.getNativePushAction(config); 前端的使用

window.bbtNative.getNativePushAction({
  id: 'goodluck', //本地push的ID 唯一
  callback: data => {
    // data 本地push状态 参考nativePushAction
    // repeat_type为 1 会获取所有状态 repeat_type为 0 表示未设置  repeat_type不存在 表示app获取异常
  }
});

打开全局弹层 客户端:window.notifyH5OpenFloatingWindowAuth(); 前端的使用

window.bbtNative.openFloatingWindowAuth();
window.bbtNative.getFloatingWindowAuthState(isHaveAuth => {
  console.log(isHaveAuth);
});
window.bbtNative.notifyH5OpenFloatingWindowAuth(isOpen => {
  console.log(isOpen);
});

获取 APP 推送权限 前端的使用

window.bbtNative.getAppPushAuthAction(isHaveAuth => {
  console.log(isHaveAuth);
});

设置 APP 状态栏 前端的使用

// @param {*} status  0: 「iOS状态栏黑色,android不隐藏状态栏」  1:「iOS状态栏白色,android隐藏状态栏」
window.bbtNative.nativeStatusBarAction(status);

退出登录态 前端的使用

window.bbtNative.forcedLogoutAccount();

Readme

Keywords

none

Package Sidebar

Install

npm i @bbtfe/native

Weekly Downloads

1

Version

0.3.12

License

none

Unpacked Size

961 kB

Total Files

131

Last publish

Collaborators

  • showstin
  • juhengze
  • most_xiaoya
  • huxinli
  • sisimengchen
  • huijuan_lv