苹果推送通知新协议不起作用
我正在testing苹果推送通知。 我发现,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)
有人试图用新协议发送推送通知吗? 如果是的话,我在做什么错了?
谢谢。
您可以考虑使用增强的消息支持库来减轻您的负担。
它将捕获失败消息的错误响应,并重新发送由APNS丢弃的消息。 (在收到错误响应之前,在发送失败之后发送的消息被丢弃)
特征:
- 非阻塞ssl套接字连接发送通知而不用等待响应。
- 一个单独的线程,用于不断检查来自读连接的错误响应。
- 发送通知缓冲区,用于重新发送失败通知后发送的通知,或通过apnsclosures任意连接。
- 在第一次通知发送失败的情况下,1秒后出现错误响应,同时发送999次通知被APNS丢弃,所有丢弃的999次通知将被重新发送,而不会丢失任何通知。 用相同的逻辑,如果通知重新发送失败,它将在发送失败之后重新发送剩余的重新发送通知。
性能:
- 以1000 /秒的吞吐量发送通知