一. 导入所需要的插件 主要需要两个
- https://ext.dcloud.net.cn/plugin?id=4035(JPUSH)
- https://ext.dcloud.net.cn/plugin?id=4028 (JCORE)
二. 在App.Vue中的 onLaunch (或者onShow)中监听极光推送的状态
监听之前记得引入
- var jpushModule = uni.requireNativePlugin("JG-JPush")
复制代码 然后监听代码
- //监听 极光推送连接状态
- uni.$on('connectStatusChange',(connectStatus)=>{
- var connectStr = ''
- if (connectStatus == true) {
- connectStr = '已连接'
- this.getRegistrationID()
- }else {
- connectStr = '未连接'
- }
- console.log('监听到了连接状态变化 --- ', connectStr)
- this.connectStatus = connectStr
- })
复制代码 三 . 在onLaunch中初始化且获取registerID
- jpushModule.initJPushService();
- getRegistrationID() { //获取registerID
- jpushModule.getRegistrationID(result=>{
- let registerID = result.registerID
- console.log(registerID)
- this.registrationID = registerID
- uni.setStorageSync("registerID",registerID)
- })
- },
复制代码 四 . 推送需要打开通知权限 ,所以可以写一个弹窗 去让用户去打开
- //getNotificationEnabled 和 noticMsgTool 只是个方法名 可以随便起
- getNotificationEnabled(){
- if(uni.getSystemInfoSync().platform == "ios"){
- jpushModule.requestNotificationAuthorization((result)=>{
- let status = result.status
- if (status < 2) {
- this.noticMsgTool()
- }
- })
- }else{
- jpushModule.isNotificationEnabled((result)=>{ //判断android是否打开权限
- if(result.code == 0){//如果为0则表示 未打开通知权限
- this.noticMsgTool()
- }
- })
- }
- },
复制代码- noticMsgTool(){
- if(uni.getSystemInfoSync().platform == "ios"){
- //苹果打开对应的通知栏
- uni.showModal({
- title: '通知权限开启提醒',
- content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
- showCancel: false,
- confirmText: '去设置',
- success: function(res) {
- if (res.confirm) {
- var app = plus.ios.invoke('UIApplication', 'sharedApplication');
- var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
- plus.ios.invoke(app, 'openURL:', setting);
- plus.ios.deleteObject(setting);
- plus.ios.deleteObject(app);
- }
- }
- });
- }else{
- //android打开对应的通知栏
- var main = plus.android.runtimeMainActivity();
- var pkName = main.getPackageName();
- var uid = main.getApplicationInfo().plusGetAttribute("uid");
- uni.showModal({
- title: '通知权限开启提醒',
- content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
- showCancel: false,
- confirmText: '去设置',
- success: function(res) {
- if (res.confirm) {
- var Intent = plus.android.importClass('android.content.Intent');
- var Build = plus.android.importClass("android.os.Build");
- //android 8.0引导
- if (Build.VERSION.SDK_INT >= 26) {
- var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
- intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
- } else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0
- var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
- intent.putExtra("app_package", pkName);
- intent.putExtra("app_uid", uid);
- } else { //(<21)其他--跳转到该应用管理的详情页
- intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
- intent.setData(uri);
- }
- // 跳转到该应用的系统通知设置页
- main.startActivity(intent);
- }
- }
- });
- }
- }
复制代码 这样写 之后 就会获取到 一个 registerID ,且联通极光推送,在根据 registerID去发送推送消息 (后台的事就不操心了)。
六. 代码解决了 ,接下来 就是 极光的应用的配置了
- 极光推送的 账号注册 就不说了
- 首页右上角有一个创建应用 点击创建应用如下图
应用名称 在 manifest.json → 基础配置中 找到 应用名称 填写
应用图标也在 manifest.json中找

- 选择消息推送 点击下一步

- 选择通道 和 填写 包名
应用包名 通过 hbuilder → 发行 → 原生app云打包 获取 android和ios包名
通道可以全选

创建成功之后 返回到 应用管理 进入你刚刚创建的 应用管理中 ,界面如下图,记住 AppKey,在manifest.json需要用到

上述流程是android的 流程 ios流程可在上图中 点击 ios集成进入,选择推送消息
ios第二步的 开发证书和生产证书 可通过证书获取流程去获取
七. manifest.json的配置
- 在App原生插件配置中 界面如下图
JPUSH_APPKEY_ANDROID 和 JPUSH_APPKEY_IOS两个填极光推送的 appkey
剩余的通道设置 可以选择示例,如下图填写方式

- 在App模块配置中勾选 push ,但是不能勾选 uniPush,因为我们用的是极光推送 不是 uniPush推送 ,uniPush推送也比较好用,有兴趣可以去试一下
- ios打包的 证书 profile文件需要 带有push功能

- 使用自定义基座打包
hbuilder → 运行 → 运行到手机或模拟器 → 运行基座 → 自定义基座
然后同级选择 制作自定义基座 ,等待打包完成之后 运行到手机或模拟器 。
如此 我们 的 极光推送配置就完成了
八. 上述完成之后 ,接下来就是测试消息推送
进入极光推送官网创建的应用中,点击左侧 消息推送,点击右侧创建通知消息
填写 内容 和 标题 和选择发送平台

上面获取的Registration ID 填写在 下图中,然后点击 发送预览 确定。

结果如下图

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |