googlePush

概述

本原生插件封装了谷歌推送平台的SDK(FCM 9.6.1),使用此原生插件可实现接收推送通知和透传消息功能。

Firebase cloud Message 为 Google Cloud Message (GCM)的最新支持,核心还是GCM,只是名字上有所变化,功能上比GCM更加强大 后台部分参考文档为firebase.google官方文档,功能较多较全,具体支持细节,请参看android端提供的接口功能,供开发者灵活实现

使用谷歌推送原生插件环境说明:

  1. 当前网络是否可以正常使用google.com,推荐http://s3.amazonaws.com/urtuz53txrmk9/index.html
  2. 系统中google play services 3件套是否完整,推荐检测工具https://www.coolapk.com/apk/com.goplaycn.googleinstall

使用谷歌推送原生插件基本流程说明:

1, 进入https://console.firebase.google.com/ 注册firebase账号,并创建项目(如果之前有gcm项目,在这里导入即可) 通过填写项目配置 应用包名 和 签名的sha1码 等必要参数之后,可以生成下载一个google-services.json文件(iOS为GoogleService-Info.plist文件),操作如图:

2, 将google-services.json 放入widget根目录中即可。注意:iOS 为 GoogleService-Info.plist 文件。关于GoogleService-Info.plist 文件参考谷歌官方文档 第 3 步:添加 Firebase 配置文件。配置文件制作完成后下载 googlePushAppendix 原生插件解压替换后重新压缩作为自定义原生插件上传,云编译时勾选该原生插件即可。

3, 此时如果设备上安装了集成googlePush原生插件的app了,执行初始化接口之后即可直接获取token了。

4, 记录下token,到 notification 选项卡处进行测试,如图

5, 此时创建一条消息发送即可看到效果,如图

,一般等待数秒即可看到效果

支持 android 平台时的配置方法:

  • 配置示例:
  
 <meta-data
    name="com.google.android.gms.version"
    value="11020000" />

注:从1.0.3版本开始需要配置com.google.android.gms.version,其中value值固定(11020000);如果和googleAnalytics、googleMap原生插件同时编译,可以共用一个;*原生插件1.0.5版本以及以后版本无需配置com.google.android.gms.version

initFcm(iOS不支持)

初始化谷歌推送 功能,一定要先执行且在整个app环境中只执行一次,一定确保初始化后,后续功能方可用

initFcm(callback(ret,err))

callback(ret,err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:true       //布尔类型;操作成功状态值,true|false
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code:''            //字符串类型;错误码
    msg: ''		     //字符串类型;错误描述
}

示例代码

var googlePush = api.require('googlePush');  googlePush.initFcm(function(ret, err) {
        api.alert({
            msg: JSON.stringify(ret)
        })
        api.alert({
            msg: JSON.stringify(err)
        })
});

可用性

Android系统

可提供的1.0.0及更高版本

register(iOS不支持,弃用)

注册谷歌服务并连接谷歌服务器获取token令牌,将该token令牌在合适的时机发送给后台,作为推送设备唯一标示;该接口在init之后立刻调用,可能会出现没值的情况,注意添加判断

register(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:               //布尔,true 代表结果正确,false代表错误发生
    token:''     		//当status 为false 无此值
}

err:

  • 类型:JSON 对象

内部字段:

{
    code:             //错误码
    msg:			  //错误描述
}

示例代码

var googlePush = api.require('googlePush');
googlePush.register(function(ret, err){
                api.alert({
            msg: JSON.stringify(ret)
        })
                api.alert({
            msg: JSON.stringify(err)
        })
            });

可用性

Android系统

可提供的1.0.0及更高版本

registerToken

注册谷歌服务并连接谷歌服务器获取token令牌,将该token令牌在合适的时机发送给后台,作为推送设备唯一标示;该接口在init之后立刻调用,可能会出现没值的情况,注意添加判断

registerToken(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status:               //布尔,true 代表结果正确,false代表错误发生
    token:''     		//当status 为false 无此值
}

err(iOS不支持):

  • 类型:JSON 对象

内部字段:

{
    code:             //错误码
    msg:			  //错误描述
}

示例代码

var googlePush = api.require('googlePush');
googlePush.registerToken(function(ret, err){
                api.alert({
            msg: JSON.stringify(ret)
        })
                api.alert({
            msg: JSON.stringify(err)
        })
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unregister(iOS不支持)

移除设备之前注册到谷歌的状态。 移除之后,将不再收到推送通知,token刷新

unregister()

示例代码

var googlePush = api.require('googlePush');
    googlePush.unRegister();

可用性

Android系统

可提供的1.0.0及更高版本

addOnMessageLisener

监听推送消息,这里返回每次收到的推送消息

addOnMessageLisener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象

内部字段:

{
    后台服务器发送给谷歌服务器时所携带的负载消息:也就是后台推送的对应 自定义数据 全部字段,格式为json;
}

示例代码

var googlePush = api.require('googlePush');
googlePush.addOnMessageLisener(function(ret){
                api.alert({
            msg: JSON.stringify(ret)
        })
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeOnMessageLisener

取消监听推送消息监听

removeOnMessageLisener();

示例代码

var googlePush = api.require('googlePush');
googlePush.removeOnMessageLisener();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

addOnTokenRefreshLisener

监听token刷新消息 ,当token值发生变化时,即可收到刷新后返回的token值,可放在初始化之前使用。

addOnTokenRefreshLisener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象

内部字段:

{
    token:             //刷新的token值
}

示例代码

var googlePush = api.require('googlePush');
googlePush.addOnTokenRefreshLisener(function(ret){
                api.alert({
            msg: JSON.stringify(ret)
        })
            });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

removeOnTokenRefreshLisener

取消监听token刷新消息;

removeOnTokenRefreshLisener()

示例代码

var googlePush = api.require('googlePush');
googlePush.removeOnTokenRefreshLisener();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

subscribeToTopic

主题订阅

subscribeToTopic(params)

params

topic:

  • 类型:字符串
  • 描述:(必选项) 主题名称

示例代码

var googlePush = api.require('googlePush');
var params = {topic:'news'};
googlePush.subscribeToTopic(params);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

unsubscribeFromTopic

取消主题订阅

unsubscribeFromTopic(params)

params

topic:

  • 类型:字符串
  • 描述:(必选项) 主题名称

示例代码

var googlePush = api.require('googlePush');
var params = {topic:'news'};
googlePush.unsubscribeFromTopic(params);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setDefaultChannel

设置默认消息通道,设置通道后应用在前台消息则通过该通道显示。设置通道可使用原生插件notificationUtil原生插件。仅android8.0以及更高版本有效

setDefaultChannel(params)

params

channel:

  • 类型:字符串

  • 描述:通道id,默认值为"channel-1001"

channelName:

  • 类型:字符串
  • 描述:通道名称,默认值为“默认通知”

示例代码

var googlePush = api.require('googlePush');
var params = {channel:'channel-1001',channelName:'默认通知'};
googlePush.setDefaultChannel(params);

可用性

Android系统

可提供的1.0.0及更高版本

addEventListener

引擎提供的,截获当通知消息被点击之后启动app,获取参数。当该事件指定name为noticeclicked(iOS)或appintent(安卓)时,代表"通知点击事件已启动监听",当服务器推送过来带有参数的消息时,用户点击通知后即可显示。

addEventListener()

示例代码

    api.addEventListener({
        name:'noticeclicked'
    },function(ret,err){
        var appParam = ret.appParam;
        if(api.systemType == 'ios'){
            var iosUrl = ret.iosUrl;
        } else {
            var sourceAppId = ret.sourceAppId;
            alert(JSON.stringify(appParam));
        }
    });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

补充事项

  • 通过后台接口推送消息,详情见firebase官网描述:https://firebase.google.com/docs/cloud-messaging/server#choose
  • 后台通过推送的json字段中是否包含notifation字段 来决定是否以通知形式提示,或是透传消息,如果是透传消息内容,会通过接口回调给js调用者
是否仍需要帮助? 请保持联络!
最后更新于 2024/03/6