Apple推送通知新协议不起作用

时间:2014-08-21 11:53:43

标签: python ios apple-push-notifications

我正在测试Apple推送通知。 我发现,APN只接受旧的协议格式。使用新格式发送数据无效。 以下是旧(工作)协议的示例。

import struct
import socket
import json

payload = {
    'aps': {
        'alert': '123!',
        'sound': 'default'
    }
}
payload = json.dumps(payload)
payload_len = len(payload)
notification = struct.pack('>bh32sh{payload_len}s'.format(payload_len=len(payload)),
                           0, 32, token.decode('hex'),
                           len(payload), payload)

这是一个例子,它不起作用:

import struct
import socket
import json

payload = {
    'aps': {
        'alert': '123!',
        'sound': 'default'
    }
}
payload = json.dumps(payload)
payload_len = len(payload)
struct_format = '>bibh32sbh{payload_len}sbhb'.format(payload_len=payload_len)
notification = struct.pack(struct_format,
                           2, struct.calcsize('bh32sbh{payload_len}sbhb'.format(payload_len=payload_len)),
                           1, 32, token.decode('hex'),
                           2, len(payload), payload,
                           5, 1, 10)

是否有人尝试使用新协议发送推送通知? 如果是的话,我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用具有增强消息支持的库来减轻您的负担。

它将捕获失败消息的错误响应并重新发送APNS丢弃的消息。 (在收到错误响应之前和之后发送失败时丢弃消息)

特点:

  • 非阻塞ssl套接字连接,无需等待响应即可发送通知。
  • 一个单独的线程,用于不断检查读取连接的错误响应。
  • 发送通知缓冲区,用于重新发送通知失败后发送的通知,或者通过apns关闭任意连接。
  • 在第一次通知发送失败的情况下,1秒后错误响应响应,APNS同时丢弃999通知,所有丢弃的999通知将被重新发送而不会丢失任何通知。使用相同的逻辑,如果通知重新发送失败,它将在失败后重新发送其余的重发通知。

性能:

  • 以1000 /秒的吞吐量发送通知