APP端接收和发送消息 - Uniapp通知栏推送

初始化GoEasy对象

建议在main.js里将goeasy对象初始化为Uniapp全局对象。allowNotification:true 表示需要支持通知栏提醒,该参数仅在Uni-app开发的App下有效,小程序和H5网页下会被自动忽略,不会报错。

Vue.prototype.goEasy = GoEasy.getInstance({
    host: 'hangzhou.goeasy.io',
    appkey: '您的appkey',
    allowNotification:true,  // true表示支持通知栏提醒,false则表示不需要通知栏提醒
});

建立连接

在接收和发送消息之前,必须要先连接GoEasy,一个app中需要,且只需要建立一个连接即可,在成功断开连接之前,不需要,也不能反复建立连接。

this.goEasy.connect({
    onSuccess: function () {  //连接成功
        console.log("GoEasy connect successfully.") //连接成功
    },
    onFailed: function (error) { //连接失败
        console.log("Failed to connect GoEasy, code:"+error.code+ ",error:"+error.content);
    },
    onProgress:function(attempts) { //连接或自动重连中
        console.log("GoEasy is connecting", attempts);    
    }
});

订阅(接收)消息

在发送消息之前,接收端必须完成消息的订阅,否则无法接收消息和通知栏提醒。

成功订阅后,如果发送的消息含有通知栏信息,将会按照如下规则触发:

  • app在前台运行,当收到新消息时,会触发onMessage方法,但不会收到通知栏提醒。
  • app在后台运行或进程被杀掉,app将会收到通知栏提醒,app拉起后,onMessage方法也会被触发。

channel从哪里来,如何创建,应该传入什么呢?

根据您的业务需求来设定,channel可以为任意字符串,除了不能包含空格,和不建议使用中文外,没有任何限制,只需要和消息的发送端保持一致,就可以收到消息。channel可以是您直播间的uuid,也可以是一个用户的唯一表示符,一个app可以订阅多个channel,可以任意定义,channel不需要创建,可随用随弃。

        this.goEasy.subscribe({
            channel: "my_channel",
            onMessage: function (message) {
                console.log("Channel:" + message.channel + " content:" + message.content)
            },
            onSuccess: function () {
                console.log("Subscribe successfully.")
            },
            onFailed: function () {
                console.log("Subscribe successfully.")
            }

        });

发送通知栏推送

当发送一条消息时,如果希望app在后台运行时,能够收到通知栏提醒,需要指定notification的title和body,反之则不需要。

通知栏提醒,对发送端没有平台限制,不论是小程序、H5还是服务端均可以进行发送,但只有Uniapp开发的APP在手机端可以接收通知栏推送,其他平台收到消息后,仅触发subscirber的onMessage方法,notification会被自动忽略。

为了确保能收到通知栏提醒,必须在手机的系统设置里确认,该app的通知栏提醒为“允许”状态。

客户端javascript发送:

    goEasy.publish({
        channel: "my_channel",  //请确认与接收端一致
        message: "Hello GoEasy!",   //app内onMessage收到的消息内容
        notification: { //定义通知栏推送
            title: '您有一条新消息', //通知栏提醒标题,仅显示于通知栏
            body:  "Hello GoEasy!", //通知栏提醒内容,仅显示于通知栏
        },
        onSuccess: function () {
            console.log("Publish successfully.")
        },
        onFailed: function (error) {
            console.log("Failed to publish message, code:"+ error.code + ' error:'+ error.content);
        }
    });

测试第一条通知栏推送

再次强调

为了确保能收到通知栏提醒,必须在手机的系统设置里确认,该app的通知栏提醒为“允许”状态。

至此,我们可以开始推送我们的第一条通知栏提醒,测试步骤:

  • 将Uniapp应用安装到手机上
  • 在手机系统设置里确认,该app的通知栏提醒为“允许”状态
  • 将app切换到后台运行
  • 运行Uniapp应用运行到浏览器,在浏览器里执行发送代码
  • 恭喜,手机端收到通知栏提醒!

集成厂商通道

为了确保APP在进程被杀掉后,仍然可以收到通知栏提醒,必须要配置厂商通道,详情请参阅GoEasy接入厂商通道教程。 GoEasy目前已集成以下厂商,其他厂商也在持续推进中:

  • 苹果iOS(APNs)
  • 小米
  • 华为
  • OPPO
  • VIVO
  • 魅族

results matching ""

    No results matching ""