更新记录

1.4.7(2019-12-04)

版本号:1.4.7
更新时间:2019.12.03
更新内容

  • 1.【重要】iOS修复Tag相关操作方法返回数据为空的Bug
  • 2.【重要】Android新增本地通知API(仅支持Android)

1.4.6(2019-12-03)

版本号:1.4.6
更新时间:2019.12.02
更新内容

  • 1.【重要】iOS修复Tag相关操作方法返回数据为空的Bug
  • 2.【重要】Android新增本地通知API(仅支持Android)

查看更多

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://ask.dcloud.net.cn/article/35763
iOS 离线打包原生插件另见文档 https://ask.dcloud.net.cn/article/35764


JYJPush插件使用说明

现在还在公测中,如果有问题或者其他需求(如新增方法等),可联系我处理;
如果有其他原生插件需要定制开发,也可以联系我开发。

注意:

插件示例工程,所有的方法都是做的按钮点击事件,具体的方法调用是按照自己业务来进行;

所有的方法,数据返回时和极光返回的数据保持一致,安卓和iOS的格式不一样!需要开发者自己判断处理

建议:

1.点对点推送,如何实现?

答:使用Alias,tag,regid均可实现,但是各有差异;推荐使用Alias,并且用用户的Token,做一次加密,比如Base64,设置为用户的Alias;后台推送的时候就拿该用户的最新token,一样做Base64,然后去推送,可实现点对点

2.如何测试推送?

答:请按照插件使用流程,依次配置;代码里面实现addJYJPushReceiveOpenNotificationListener,和addJYJPushReceiveNotificationListener,即可测试推送。(前台插件初始化成功,成功的示例是,注册号以后,后台测试推送,可用设备数不为0;若RegID获取为0或空,则表示失败;或设置一个Alias,返回的iResCode不为0,也是失败)

3.对应的代码写在Uni项目的哪个位置?

答:具体位置没有要求,建议是监听类型的,放到App.vue(App.vue也是可以做跳转的),其他的按照自己业务逻辑处理


JYJPush插件交流群:884121331 希望大家踊跃加群,相互交流沟通学习


我的QQ是:374850759 (加好友麻烦备注:JY-JPush插件)




常见问题


  • 问题1.appkey 如何获取

  • 答:appkey是极光后台,针对某一个应用生成的,所以需要去极光注册账号,登录以后创建应用,即可获得appkey

  • 问题2.chanel 是什么?怎么填写,有什么用?

  • 答:channel是渠道的意思,极光推送支持渠道设置,方便用户区分推送接受和统计时的一个情况;比如安卓渠道一般是会有应用宝、QQ、360这样的软件平台,也可能是自己区分的一些渠道,iOS只有AppStore,或者企业签名;所以不知道写什么的时候,iOS就写iOS,安卓就写android就行了。

  • 问题3.为什么我试用/购买了插件,也自定义了基座,但是运行的时候一直提示不包含基座?

  • 答:这个问题,第一,所有的APP插件,都是需要自定义基座的,所以先保证自己是在自定义基座运行,而不是标准基座;第二,如果插件也勾选了,基座也自定义了,但是一直提示不支持,这个时候可以选择关闭一下HBuilder,然后重新删除插件,重新勾选,重新自定义基座(自定义基座时,云端的确有时会失败,所以只能这样重试一下)

  • 问题4.安卓/iOS杀掉进程后,还能收到推送吗?

  • 答:iOS推送用的APNS,所有就算是杀掉APP进程,一样可以收到推送;安卓,因为生态问题,如果杀掉了进程,所有的推送都会收不到,不过部分厂商也针对性出了解决方案,也就是厂商推送,比如魅族、华为、小米等;但是因为插件不清楚到底使用插件的人会开通哪些厂商的推送,所以暂时没有对接任何一家厂商推送,如果有这样的需求,可以联系我进行插件定制,如果后续定制的人多了,我也会开放多个插件,针对性的来处理厂商的推送。


一、插件使用流程(原生插件调试,都需要自定义基座)

1.配置Appkey及渠道信息(安卓渠道信息推荐Andorid,iOS渠道信息推荐App Store),Appkey来源是极光官网,也就是需要先去极光官网进行注册,添加应用,然后配置推送设置(安卓包名、iOS证书等)

a.找到manifest.json,原生插件配置
b.勾选JY-JPush
c.填写appkey及channle(注意需保证包名和appkey在极光的配置一致)

2.引用原生插件

const jyJPush = uni.requireNativePlugin('JY-JPush');

二、测试对接情况,判断是否完成对接

再确保完成上述的插件引入后,可尝试调用一个方法,查看返回数据 如:

setJYJPushAlias

jyJPush.setJYJPushAlias({
userAlias: 'testAlias'
}, result=> {
//  设置成功或者失败,都会通过这个result回调返回数据;数据格式保持极光返回的安卓/iOS数据一致
//  注:若没有返回任何数据,考虑是否初始化完成
uni.showToast({
icon:'none',
title: JSON.stringify(result)
})
});

若返回的数据ErrorCode=0,此时可在极光后台通过 'testAlias' 进行推送测试,推送预览时,查看到预估设备不为0,表示插件对接成功,即可继续调用

三、推送对接示例(只需完成以下两个方法,即可监听推送和监听点击推送消息的事件)

1.监听消息推送事件(后台发送消息,前端即可实时监听接受到消息的内容)

addJYJPushReceiveNotificationListener

jyJPush.addJYJPushReceiveNotificationListener(result=> {
//  监听成功后,若收到推送,会在result返回对应的数据;数据格式保持极光返回的安卓/iOS数据一致
uni.showToast({
icon:'none',
title: JSON.stringify(result)
})
});
2.监听推送消息点击事件(推送来了以后,手机会有弹窗或通知栏提示,点击消息时,会触发这个方法;并且会进入APP,如果APP进程被杀死也会打开;)

addJYJPushReceiveOpenNotificationListener

jyJPush.addJYJPushReceiveOpenNotificationListener(result=> {
//  监听成功后,若点击推送消息,会触发result;数据格式保持极光返回的安卓/iOS数据一致
uni.showToast({
icon:'none',
title: JSON.stringify(result)
})
});

四、Alias相关API接口

  • 4.1.设置Alias

    setJYJPushAlias

    jyJPush.setJYJPushAlias({
    //  按照自己的业务需求来设置
    userAlias: '这里是需要设置的userAlias'
    }, result=> {
    //  设置成功或者失败,都会通过这个result回调返回数据;数据格式保持极光返回的安卓/iOS数据一致
    //  注:若没有返回任何数据,考虑是否初始化完成
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 4.2.查询Alias

    getJYJPushAlias

jyJPush.getJYJPushAlias({
//  可以不用传值进去,但是需要配置这项数据
}, result=> {
uni.showToast({
icon:'none',
title: JSON.stringify(result)
})
});
  • 4.3.删除Alias

    deleteJYJPushAlias

jyJPush.deleteJYJPushAlias({
//  可以不用传值进去,但是需要配置这项数据
}, result=> {
uni.showToast({
icon:'none',
title: JSON.stringify(result)
})
});

五、Tag相关API接口

  • 5.1.新增Tag

    addJYJPushTags

    jyJPush.addJYJPushTags({
    userTag: '新增自己想要的tag'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.2.设置Tag

    setJYJPushTags

    jyJPush.setJYJPushTags({
    userTag: '设置自己想要的tag'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.3.删除Tag

    deleteJYJPushTags

    jyJPush.deleteJYJPushTags({
    userTag: '删除自己想要的tag'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.4.查询已经设置Tag

    getJYJPushTags

    jyJPush.getJYJPushTags(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.5.清空已经设置Tag

    cleanJYJPushTags

    jyJPush.cleanJYJPushTags(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 5.6.校验Tag是否已经被设置

    validJYJPushTags

    jyJPush.validJYJPushTags({
    userTag: '需要验证的tag'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

六、推送监听相关API接口

  • 6.1.监听消息通知事件(后台发送后,会触发) -- 【基础】

    addJYJPushReceiveNotificationListener

    jyJPush.addJYJPushReceiveNotificationListener(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 6.2.监听点击通知栏消息事件(点击通知栏的消息,或者悬浮框,会触发;做事件跳转,需要用到这个接口,如:后台发了一个新闻,消息里面会含有新闻的链接,点击消息就需要获取这个链接,然后跳转) -- 【基础】

    addJYJPushReceiveOpenNotificationListener

    jyJPush.addJYJPushReceiveOpenNotificationListener(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 6.3.监听消息点击事件(APP进程被杀死后,消息还存在通知栏的时候,点击消息会出触发这个方法) -- 【基础】

    getLastPushInfo

    jyJPush.getLastPushInfo(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 6.4.监听自定义消息(穿透消息)

    addJYJPushCustomReceiveNotificationListener

    jyJPush.addJYJPushCustomReceiveNotificationListener(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 6.5.监听消息点击事件(点击通知栏的消息,或者悬浮框,会触发;做事件跳转,需要用到这个接口。方法同6.3,解决部分机型兼容问题,部分继续点击消息通知栏消息后打开APP白屏或者打不开APP,可尝试使用这个方法,注意不要和addJYJPushReceiveOpenNotificationListener一起使用,也就是两个方法,任选其一) -- 【仅安卓支持】

    addJYJPushReceiveNewOpenNotificationListener

    jyJPush.addJYJPushReceiveNewOpenNotificationListener(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

七、角标相关接口(API)

注意:这些接口是处理的极光服务器的角标,并不是APP显示的角标;如果要处理APP的角标需要调用Uni的方法:

uni.runtime.setBadgeNumber(数字)

  • 7.1.设置极光服务器角标(仅iOS支持)

    setJYJPushBadge

    jyJPush.setJYJPushBadge({
    value: '0-9999之间'
    }, result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 7.2.重置(清空)极光服务器角标(仅iOS支持)

    resetJYJPushBadge

    jyJPush.resetJYJPushBadge(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

八、开启/关闭通知

  • 8.1.关闭通知/关闭接收消息推送(仅Android支持)

    stopJYJPush

    jyJPush.stopJYJPush(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 8.2.开启通知/继续接收消息推送(仅Android支持)

    resumeJYJPush

    jyJPush.resumeJYJPush(result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

9、本地通知(不依赖于极光)

  • 9.1.Android 添加本地通知(所有参数必须传递)-- 【仅安卓支持】

    android_addLocalNotification

    jyJPush.android_addLocalNotification({
    builderId:"1", // builderId 编号,自己定义,如果不管,可以全部传递1
    content: "推送内容",
    title: "推送标题",
    notificationId: "1", // 消息ID,需要为数字,后续可以通过这个取消,
    year: "2019", // 预约发送的时间,若小于当前时间,则立即发送;若大于当前时间,则预约时间,时间到了就发送;但是APP需要在前台
    month: "12",
    day: "02",
    hour: "21",
    minute: "20",
    second: "21"
    },result=> {
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
  • 9.2.Android 清除本地通知(所有参数必须传递)-- 【仅安卓支持】

    android_removeLocalNotification

    jyJPush.android_removeLocalNotification({
    notificationId: "1", // 消息ID,需要为数字
    },
    result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 9.3.Android 清除所有本地通知-- 【仅安卓支持】

    android_clearLocalNotifications

    jyJPush.android_clearLocalNotifications(
    result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

10、获取registrationID

  • 10.1.获取registrationID

    getRegistrationID

    jyJPush.getRegistrationID(
    //  返回的数据会有registrationID,errorCode
    result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });

11、其他方法

  • 11.1.获取Appkey和渠道信息(部分安卓可能获取不到;如果获取的数据为空,需要检查Manifest源码模式是否有填写信息)

    getAPPKey

    jyJPush.getAPPKey(
    //  返回的数据会有自己配置的appkey和channel
    result => {
    uni.showToast({
    icon: 'none',
    title: JSON.stringify(result)
    })
    });
  • 11.2.移除通知栏的所有通知

    ios_removeNotification / android_clearAllNotifications

    
    //  iOS
    jyJPush.ios_removeNotification(result=> {
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });
    //  Android
    jyJPush.android_clearAllNotifications(result=> {
    uni.showToast({
    icon:'none',
    title: JSON.stringify(result)
    })
    });

`

隐私、权限及商业化声明

1. 本插件需要申请的手机端权限列表:

推送权限

2. 本插件采集的手机端数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问