可以在 iOS 应用程序中使用 masterKey 来通过 Parse Server 发送推送通知吗?

Posted

技术标签:

【中文标题】可以在 iOS 应用程序中使用 masterKey 来通过 Parse Server 发送推送通知吗?【英文标题】:Can the masterKey be used in an iOS App to send Push Notifications with Parse Server? 【发布时间】:2017-01-06 04:52:55 【问题描述】:

我正在尝试在应用中开发Push Notifications 功能,首先尝试通过应用发送它们,我听说需要masterKey。虽然我还没有听说可以将masterKey 放入我的 Xcode 项目的任何地方。

在我的 Xcode 项目中是否有包含 masterKey 的特定位置? masterKey 甚至可以在 swift 项目中使用吗?

【问题讨论】:

【参考方案1】:

是的,masterKey 必须用于发送推送通知,但 Parse-server 不支持从客户端应用程序推送,因为安全问题。所以,你需要为它写一个云函数。向所有安装了您的应用的用户发送推送的简单云功能如下所示。

Parse.Cloud.define("push", function(request, response)
    var message = request.params.message;
    //Pushes work with Installation table
    //So, you need to select to whom you want to push
    var installationQuery = new Parse.Query(Parse.Installation);

    //You should set expiration time when push will be expired
    //This is optional
    var expDate = new Date();
    expDate.setDate(expDate.getDate() + 1); //The notification will expire in 1 day

    //Setting up push data
    var data = "badge": "Increment", "sound": "default";
    data['alert'] = message;

    //Sending push
    Parse.Push.send(
        where: installationQuery,
        data: data,
        expiration_time: expDate
    ,
        success: function () 
            response.success("Pushed successfully");
        ,
        error: function (error) 
            response.error(error);
        ,
        useMasterKey: true
    );
);

在您的 ios 应用中,

PFCloud.callFunctionInBackground("push", withParameters: ["message":"Pushing from cloud code"]) 
  (response: AnyObject?, error: NSError?) -> Void in
  //Do stuffs

希望对你有帮助

【讨论】:

【参考方案2】:

masterKey 添加到服务器端。根据您的设置或实例,您可以在 index.js 文件中进行设置。

// With the value of your app's Master Key completed:
masterKey: process.env.MASTER_KEY || '<your app's Master Key>'

如果您使用环境变量,您可以使用此值设置您的 json 文件:

"PARSE_SERVER_MASTER_KEY": "#####",

应该在您设置证书路径的同一文件中。

【讨论】:

以上是关于可以在 iOS 应用程序中使用 masterKey 来通过 Parse Server 发送推送通知吗?的主要内容,如果未能解决你的问题,请参考以下文章

未解决的参考:MasterKey

在平台之间传输 Facebook 会话对象

MySQL 5.7 TDE

在客户端JS上声明Parse app id和server url是否安全?

Android ,我们可以使用 Parse LocalDataStore 进行本地存储吗?

SaltStack多Master与多环境