npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@bbtfe/native

v0.3.12

Published

@bbtfe/native

Downloads

43

Readme

@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();