可以在 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 发送推送通知吗?的主要内容,如果未能解决你的问题,请参考以下文章
在客户端JS上声明Parse app id和server url是否安全?