我有一个Parse-Server(由heroku托管),我已经配置了推送通知。在仪表板上它似乎设置正确,但当我尝试发送一条消息时,它只显示推送“已保存”,但是当我检查其状态时,却无法发送成功。以下是设置的index.js:
var api = new ParseServer({
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it $
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse', // Don't$
liveQuery: {
classNames: ["Posts", "Comments"] // List of classes to support for query s$
},
push: JSON.parse(process.env.SERVER_PUSH || "{}"),
});
在Heroku网站上,PARSE_SERVER_PUSH
(以及appId,masterKey和serverURL)是通过我的config vars进行配置的:
{ "ios":
{ "pfx": "/Users/path/to/folder/Prod\Cert.p12 ",
"passphrase": "******",
"bundleId": "com.parse.app",
"production": true
}
}
我不确定为什么控制面板显示服务器已正确设置以发送推送通知,但所有通知都失败了?
编辑: 我还尝试通过以下API请求发送推送:
curl -X POST \
-H "X-Parse-Application-Id: myAppsID" \
-H "X-Parse-Master-Key: ***************" \
-H "Content-Type: application/json" \
-d '{
"where": {
"deviceType": { "$in": [ "ios", "android" ] }
},
"data": {
"title": "Ant-man",
"alert": "This is awesome. It is awesome."
}
}' \
https://appName.herokuapp.com/parse/push
在我的终端上返回了{"result":true},但是仪表板上仍然显示推送失败。
编辑2:我还注意到,尽管选择了我为推送创建的特定受众群体,但 parse-server 总是报告我试图将其发送到默认的 "Everyone"。不确定是否提供了任何额外的提示。
PARSER_SERVER_PUSH
中写的是 PARSER 而不是 PARSE,因为使用后者会导致仪表板无法打开。 - Runeaway3process.env.PARSE_SERVER_PURSH
,而不是PARSER_SERVER_PUSH
,否则会导致失败并传递未定义的值。 - Jake T.__dirname/<path>/<to>/<cert>
,它应该被配置为你项目的目录,使得引用本地化到你的项目而不是你的机器,以防它移动位置。 - Jake T.PARSE_SERVER_PUSH
的JSON对象,则应在index.js中使用env.PARSE_SERVER_PUSH
。如果在运行时出现错误,那是因为它找不到该文件并失败了。如果您不使用相同的名称,则引用的是空值。这些环境变量不知道您想要自动设置什么,您需要通过名称显式设置它们。当您使用相同的名称时,会输出什么错误信息? - Jake T.