我正在尝试在我的本地解析服务器上设置推送通知。 尝试发送推送时出现此错误:
parse-server-push-adapter APNS cannot find vaild connection for 9a86...21
(每个安装设备令牌都会重复该错误。)
有什么想法吗?
我的服务器代码:
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 || '',
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',
liveQuery: {
classNames: ["Mission"]
},
filesAdapter: new S3Adapter(
process.env.S3_ACCESS_KEY || '',
process.env.S3_SECRET_KEY || '',
process.env.S3_BUCKET || '',
{directAccess: true}
),
push: {
ios: {
pfx: 'certificates/development.p12',
bundleId: 'co.example.myApp',
production: false // Dev
}
}
});
我正在推动我的云代码:
var installationQuery = new Parse.Query(Parse.Installation);
installationQuery.containedIn('user', specificUser);
Parse.Push.send({
where: installationQuery,
data: {
"alert": "Loren ipsum ",
"id": MyCustomId
}
}, { useMasterKey: true }, {
success: function() {
console.log("Push was successful!");
},
error: function(error) {
console.error(error);
}
});
答案 0 :(得分:1)
导致错误的原因是您的安装表中的设备与push
请求中的过滤器相匹配,该请求已不再在Apple中为您的应用注册。当Apple收到对不再向您的应用程序注册的设备的通知请求时,它会返回该消息,表明如果它继续发生,您应该采取一些措施。
在我的情况下,我在安装表中注册了四个与push
过滤器匹配的设备,其中两个设备不再在Apple中为我的应用注册,所以每次推送它都会得到每个设备的错误安装无效。
我不确定为什么会这样,但我看到以下情况会导致创建一个新的安装记录,使先前的安装无效。看起来像解析服务可以监视并采取操作后,为该设备令牌获取了这么多错误,而错误之间没有成功推送。
deviceToken
值已更改。要解决这些错误,您只需删除与错误消息中的deviceToken
匹配的安装
答案 1 :(得分:0)
您也应该配置生产证书。另请注意,Apple现在会发布通用推送证书,您应该使用它,因为它适用于已获得的deviceTokens,包括开发和生产包。