iphone - Apple 推送通知增强格式

标签 iphone push-notification apple-push-notifications

有人知道使用增强版协议(protocol)时如何从Apple推送通知服务获取错误响应吗?

最佳答案

根据Apple文档,如果我们使用增强版的Push协议(protocol),我们可以从 channel 获取错误响应,错误响应格式:

COMMAND(1 byte)|STATUS(1 byte)|ID(4 byte)

状态:

0: 'No errors encountered'
1: 'Processing error'
2: 'Missing device token'
3: 'Missing topic'
4: 'Missing payload'
5: 'Invalid token size'
6: 'Invalid topic size'
7: 'Invalid payload size'
8: 'Invalid token'
255: 'None (unknown)'

这里是示例代码:

...
socket = SSLSocket (
    socket.socket()
    , ssl_version = ssl.PROTOCOL_SSLv3
    , certfile
)

socket.connect(apnsHost, apnsPort)

len_written = connectionContext.write(socket)

errors = []

# Wait for input from socket
inputready = select.select ([socket], [],[], 1)[0]

if inputready:
        replyBlock = channel.recv (6)

        errors = [] #will be filled with error responses
        while replyBlock:
            #error-response packet
            #COMMAND(1)|STATUS(1)|ID(4)
            command, status, id = struct.unpack_from('!BBL', replyBlock)

            if status != 0:
                errors.append((command, status, id))                

            replyBlock = channel.recv (6)

关于iphone - Apple 推送通知增强格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884381/

相关文章:

android - 检测手机浏览器显示 "Call"即使分辨率很高

ios - 具有自定义逻辑的可重用 UITableViewCell

ios - 该应用在 Payload/<AppName>.app/<AppName> 中引用非公共(public)选择器

android - 无法在 API 级别 17 上获取 token

ios - 当应用程序在 iOS 中处于运行状态时检测推送通知选择

使用 APNS token 而非 FCM token 的 Firebase 云函数消息传递

iphone - NSUserDefaults 或钥匙串(keychain)更好地在 iPhone 应用程序中保存用户名和密码

ios - 我如何在内部编码推送通知

iOS 静默本地推送通知 objective-c ?

php - iOS6 中的自动增量推送通知角标(Badge)