如何在 Parse Server 上配置推送通知?

Posted

技术标签:

【中文标题】如何在 Parse Server 上配置推送通知?【英文标题】:How to configure Push Notifications on Parse Server? 【发布时间】:2016-03-23 04:20:29 【问题描述】:

我在 Heroku 和 mongoDb 上部署了一个 Parse 服务器,使用 GitHub 上 parse-server-example 的修改分支。我在这里查看了关于如何在解析服务器上发送推送通知的 wiki:https://github.com/ParsePlatform/parse-server/wiki/Push 但我正在寻找更深入的回应。我的 CLOUD CODE (cloud/main.js) 用于发送预定的推送通知(在 Parse 的托管版本上正常运行)是

    Parse.Cloud.define('sendPush', function(request, response) 


    var userQuery = new Parse.Query(Parse.User);
    userQuery.equalTo('username', request.params.targetUsername);


    var pushQuery = new Parse.Query(Parse.Installation);
    pushQuery.matchesQuery('user', userQuery);


   Parse.Push.send(
   where: pushQuery,
     data: 
        alert: 'You have a new message from ' + request.params.fromUsername + '!'
      , 
      push_time: request.params.date
    , 
      success: function() 
        // Push was successful
        response.success('push successful')
      ,
      error: function(error) 
        // Handle error
        response.error('push failed')
      
   );

    );

我正在严格使用 ios,我希望在我的 Parse Server 上再次使用此代码功能。 wiki 指南说我需要配置 Parse 服务器,我不知道该怎么做或在哪里做。任何帮助表示赞赏。谢谢

【问题讨论】:

【参考方案1】:

来自解析服务器 wiki:

 var server = new ParseServer(
    databaseURI: '...',
    cloud: '...',
    appId: '...',
    masterKey: '...',
    push: 
      android: 
        senderId: '...',
        apiKey: '...'
      ,
      ios: 
        pfx: '/file/path/to/XXX.p12',
        bundleId: '',
        production: false
      
    
  );

所以你只需将所有内容都放在 main.js 中。

您还可以在此处找到关于在解析服务器上设置推送通知的非常全面的指南:

https://guides.codepath.com/android/Configuring-a-Parse-Server

【讨论】:

我尝试将它放在我的 main.js 中,但放在云代码函数中。这可能是问题所在。 很高兴您能够修复它 :) 什么属于“云”字段? 文档说:“你的云代码的绝对路径”所以它是你的云代码目录的路径。由于您使用的是 parse-server-example 和 Heroku,因此路径应该已经正确:process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js' 只要你把你的clode代码放在名为“cloud”的目录下即可。【参考方案2】:

您只需将推送通知键放入解析配置中即可。在您的 index.js 文件中,只需将推送对象添加到新的 ParseServer 初始化,如下所示:

var server = new ParseServer(
    push: 
      android: 
        senderId: 'your send id',
        apiKey: 'your app key'
      ,
      ios: 
        pfx: 'path to pfx local',
        bundleId: '',
        production: false
      
    ,
    databaseURI: 'your database uri',
    appId: 'your app key',
    masterKey: 'master key',
  );

【讨论】:

【参考方案3】:

取决于您如何启动parse-server。如果直接在命令行启动,可以这样做:

parse-server myConfig.json

服务器的整个配置进入这个 myConfig.json 文件,用于推送和服务器的其他方面。这是myConfig.json的示例内容


   "appId": "APP-ID",
   "masterKey": "MMASTER-KEY",
   "cloud": "relative-path-to-directory-that-contains/main.js",
   "push": 
      "ios":
         "pfx": "relative-path-to-apple-push-cert.p12",
         "bundleId": "com.company.appname",
         "production": false
      ,
      "android":
         "senderId": "your-gcm-sender-id",
         "apiKey": "your-api-key"
      
   

如果您从 express 或某个节点脚本启动解析服务器,答案与其他人所说的相似,只是路径必须是绝对路径:

var server = ParseServer(
   "appId": "APP-ID",
   "masterKey": "MMASTER-KEY",
   "cloud": "absolute-path-to-directory-that-contains/main.js",
   "push": 
      "ios":
         "pfx": "absolute-path-to-apple-push-cert.p12",
         "bundleId": "com.company.appname",
         "production": false
      ,
      "android":
         "senderId": "your-gcm-sender-id",
         "apiKey": "your-api-key"
      
   
)

您问这个问题已经 3 个月了,所以您可能已经克服了最初设置 parse-server 的困惑。如果您仍有疑问,在您的本地计算机上设置parse-server 可能会有所帮助,这样您就可以准确地知道在哪里以及是什么。

这是guide to setup parse-server for local development。

【讨论】:

您好,请问如何获取 main.js 的绝对路径以及如何获取云目录。 @lastoneisbearfood【参考方案4】:

您需要为您的解析服务器配置推送通知所需的密钥

访问https://github.com/ParsePlatform/parse-server/wiki/Push 了解如何实现这一目标。

【讨论】:

我已经看到了,但我的问题是如何使用这些密钥配置我的解析服务器?他们去哪儿了? 您将它们设置在创建 Parse Server 实例的位置,例如:var api = new ParseServer(..); 这是在 parse-server-example 的 index.js 这就是为什么你不应该只留下一个链接,至少应该写下链接的要点......

以上是关于如何在 Parse Server 上配置推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Parse Server 和 PHP 发送推送通知

iOS Swift App 不会收到 Parse Server 发送的推送通知

如何自定义推送通知?

如何将 Apple 推送通知支持添加到 Heroku 上的自托管 Parse 服务器?

Parse-server:iOS 推送通知

Parse-Server 推送通知