推送通知仅适用于外国第三方推送提供商服务?

时间:2018-06-07 15:21:18

标签: android firebase ionic-framework push-notification ionic3

我正在使用Ionic 3构建应用程序并使用Firebase作为Android构建的推送提供程序。下图显示了现在正在运行的架构(不是GCM而是Firebase)

enter image description here

顺便说一句,我想知道是否有可能(以及如何)自己构建推送提供程序,我在哪里可以找到一些信息,我搜索了所有谷歌,但我没有发现了任何一种反应。使用我公司的外部推送提供商推送通知仅工作(Firebase,OneSignal等)?

编辑:我的目的是不使用任何类型的第三方服务,如firebase或APNS或OneSignal等,我想自己构建

抱歉,移动设备不是我的IT背景。 :)

1 个答案:

答案 0 :(得分:2)

您可以通过Firebase使用自己的服务器发送推送通知。 请按照以下步骤操作。

  • 转到Firebase控制台并创建项目。
  • 转到项目设置中的 CLOUD MESSAGING
  • 您会在项目凭据中看到Server keyLegacy server keySender ID
  • 您唯一需要的是Server key。复制Server key
  • 您需要将post个请求发送给“https://fcm.googleapis.com/fcm/send”。

发布请求的标题

您需要设置两个标题。

  1. Content-Type:'application / json'
  2. 授权:'key =服务器密钥'
  3. Server key替换为您在项目设置中从firebase云消息传递中复制的内容。

    有效负载

    您必须根据离子推送插件更改有效负载。(cordova-plugin-fcm,cordova-plugin-firebase)。

    {
       "to" : 'Push Device Token',
       "notification" : {
            "title": 'Title for Push Message',
             "body" : 'Push Message'
        }
    }
    
    {
       "to" : 'Push Device Token',
       "content_available": boolean,
       "priority": "high",
       "data": {
           "show_in_foreground": boolean,
           "body": 'Push Message'
         }
    }
    

    代码示例

    如果您使用NodeJS,则可以使用request npm module发送帖子请求。

    var request = require('request');
    var PUSH_API_URL = 'https://fcm.googleapis.com/fcm/send';
    var  AUTHORIZATION = 'key=XXXXXXXXX'; //Replace XXXXXXXXX with your Server key
    var payload = {
       "to" : 'Push Device Token',
       "notification" : {
            "title": 'Title for Push Message',
             "body" : 'Push Message'
        }
    };
    
    request.post(
        PUSH_API_URL,
    {
      json: payload,
      headers:{
        'Authorization' : AUTHORIZATION,
        'Content-Type' : 'application/json'
      }} , function(error, response, body){
      if (error) {
        // TODO: handle the error
      }
      else if(response.statusCode === 200){
        // TODO: handle the success response
      }
      else{
    
      }
    });
    

    希望这会对你有所帮助。如果您需要澄清下面的任何评论。从Firebase Documentation了解更多信息。