uniapp集成极光推送

本文旨在记录使用极光推送中遇到的坑

注册极光账号并获取AppKey

极光官网注册账号,并创建应用,填写包名,获取AppKey。
进入消息推送 -> 推送设置 -> 集成设置中配置iOS推送证书

引入极光推送插件

极光推送依赖 极光JCore官方SDK,所以首先需要引入 极光JCore官方SDK。然后引入 极光JPush官方SDK
然后在项目的manifest.json中,找到App原生插件配置,选择我们引用的云端插件(本地插件需要在根目录下创建nativeplugins文件夹,将下载的离线插件包放在nativeplugins文件夹里)

勾选 Push 模块,一定不要勾选uniPush!!!
选择云端插件
填写获取到的AppKey
填写AppKey
源码视图

引用已经完成,下面开始编码。

调用极光推送

common中新建jpush.js

// 引入极光推送插件
var jpushModule = uni.requireNativePlugin("JG-JPush");

export default () => {
    // 开启debug模式
    jpushModule.setLoggerEnable(true);
    // 初始化SDK
    jpushModule.initJPushService();
    
    // 连接状态回调
    jpushModule.addConnectEventListener(result => {
        let connectEnable = result.connectEnable
        // true已连接, false未连接
        console.log("jpush连接", connectEnable)
    })

    // 设置别名
    jpushModule.setAlias({
        "alias": "别名",
        "sequence": 1
    })
    
    // 通知事件回调
    jpushModule.addNotificationListener(result => {
        // 通过 notificationEventType字段区分是收到通知还是点击通知
        const { notificationEventType, messageID, title, content } = result
        if(notificationEventType == 'notificationOpened') {
            // 点击通知操作
        } else if(notificationEventType == 'notificationArrived') {
            // 收到通知
        }
    })
    
    // 获取应用程序的 RegistrationID。 只有当应用程序成功注册到 JPush 的服务器时才返回对应的值,否则返回空字符串
    jpushModule.getRegistrationID(result => {
        if (result.registerID) {
            uni.setStorageSync("register_id", result.registerID)
        }
    })
    
    // 自定义消息,不会显示在通知栏里
    jpushModule.addCustomMessageListener(result => {
        console.log("自定义消息", result)
    })
}

App.vue中引入jpush.js

import jpush from '@/common/jpush.js'

export default {
    onLaunch() {
        jpush()
    }
}

Android相关API

监测推送状态

jpushModule.isPushStopped(res => {
    // code   0已停止推送  1未停止推送
    const { code } = res
})

关闭推送

jpushModule.stopPush();

恢复推送

jpushModule.resumePush();

公共API

移除角标(iOS下测试正常,Android没测试)

jpushModule.setBadge(0)
plus.runtime.setBadgeNumber(0)

你可能感兴趣的:(uniapp极光推送)