我创建了一个简单的iOS应用程序并启用了推送通知。
我正在使用Windows Azure作为我的服务器。
我按照步骤启用了推送通知(使用开发证书),并成功创建了设备令牌。
然后我从服务器推送了一个通知。我收到下面的错误消息。
Push notification sent: { multicast_id: "some random number",
success: 0,
failure: 1,
canonical_ids: 0,
results: [ { error: 'InvalidRegistration' } ],
invalidIds: [ "my device token" ],
updatedIds: {} }
我删除了我的应用程序并重新创建了设备令牌。但是,我得到了相同的设备令牌。我还检查了我是否在didReceiveRemoteNotification中得到了响应。我没有。
我又试了一遍,但结果还是一样。有人能提出问题可能是什么吗?
经过一段时间的摸索,我终于找到了一种方法。想和每个人分享同样的东西。
为了解决这个问题,我做了一些改动。
-
苹果返回的设备令牌将同时包含方括号和空格。Azure文档只提到在使用令牌进行通知之前删除方括号。但是,我们必须去掉括号和空格。
-
我们不应该在服务器中保留任何非活动的设备令牌。出于某种原因,当我触发对活动和非活动设备令牌的通知时,我在任何活动设备上都看不到任何通知。当我删除非活动令牌并触发通知时,我会在所有活动设备上看到通知。
也就是说,现在一切都很好!