iOS推送通知:找不到虚拟连接

时间:2016-03-30 05:36:57

标签: parse-server

我正在尝试在我的本地解析服务器上设置推送通知。 尝试发送推送时出现此错误:

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);
  }
});

2 个答案:

答案 0 :(得分:1)

导致错误的原因是您的安装表中的设备与push请求中的过滤器相匹配,该请求已不再在Apple中为您的应用注册。当Apple收到对不再向您的应用程序注册的设备的通知请求时,它会返回该消息,表明如果它继续发生,您应该采取一些措施。

在我的情况下,我在安装表中注册了四个与push过滤器匹配的设备,其中两个设备不再在Apple中为我的应用注册,所以每次推送它都会得到每个设备的错误安装无效。

Error Message from the Parse Server Log

Matching devices in the dashboard

我不确定为什么会这样,但我看到以下情况会导致创建一个新的安装记录,使先前的安装无效。看起来像解析服务可以监视并采取操作后,为该设备令牌获取了这么多错误,而错误之间没有成功推送。

  1. 用户删除并重新安装应用
  2. 用户更新其iOS版本,deviceToken值已更改。
  3. 通过更改配置设置,无需重新安装应用程序即可在应用程序中更新解析服务的连接URL。
  4. 要解决这些错误,您只需删除与错误消息中的deviceToken匹配的安装

答案 1 :(得分:0)

您也应该配置生产证书。另请注意,Apple现在会发布通用推送证书,您应该使用它,因为它适用于已获得的deviceTokens,包括开发和生产包。

相关问题