我正在测试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)
是否有人尝试使用新协议发送推送通知? 如果是的话,我做错了什么?
感谢。
答案 0 :(得分:0)
您可以考虑使用具有增强消息支持的库来减轻您的负担。
它将捕获失败消息的错误响应并重新发送APNS丢弃的消息。 (在收到错误响应之前和之后发送失败时丢弃消息)
特点:
性能: