从 App Store 下载的应用程序获得了 BadDeviceToken,从源代码构建没有
App Download from App Store got BadDeviceToken, build from source does not
我在 Whosebug 上进行了搜索,但其中 none 回答了我的问题
从 Xcode 构建 APNS 有效,但我的后端提高了 App Store 版本 BadDeviceToken
。
Success
是 registration_id
由源代码
构建而成
In [1]: APNSDevice.objects.all().send_message("test")
Out[1]:
[{'27321a3d872613499e27638733e9d1da7e6aa52888a2d90769b150f6339360b1': 'Success',
'798a23a46169e405c41a0c9f44faa0acd39a65119960b973acd248a6de1d624e': 'Success',
'1d742a9ae1684fed5e6c672587ee27c1523cc97e931cc64f108f7c4924aba2af': 'DeviceTokenNotForTopic',
'27173de1aed3a065644708602fd5659cf4e0f8c3ce5b3ef7c4b0769655b92041': 'DeviceTokenNotForTopic',
'e5647247877a0e1db3c7b52821b4230551267ca8a360f862ec5dde506e9b2f36': 'Success',
'0eecae0cb6f4c27ee4b915e37dbb9c7cc84e4967e71c8efab808e231f46b8ec6': 'BadDeviceToken',
'582d6a7c4628131cba9d0dfa9096cc81e3b48f6b6409252515d7402ef1c3ef30': 'BadDeviceToken'}]
我暂时不关心 DeviceTokenNotForTopic
。只关注 BadDeviceToken
重现步骤为:
- 关注this获取
.p12
个文件
- 然后从doc生成
.pem
。我必须把 passphrase
放到 key
否则我无法进行下一步
- 从 App Store 下载我自己的应用程序并登录以获取
registration_id
支票:
pushtry.com
我上传.p12
放registration_id
。它有效我可以得到 push notification
openssl s_client -connect gateway.push.apple.com:2195 -cert aps-cert.pem -key aps-key-noenc.pem
也可以正常工作。连接仍然存在
我的配置:
Django3
django-push-notification @master 提交:c610dd9c7871f4e81bdffce783df8b040ca22878
settings.py
PUSH_NOTIFICATIONS_SETTINGS['APNS_CERTIFICATE'] = str(APPS_DIR) + '/push_noti/dd/aps.pem'
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = "gateway.push.apple.com:2195"
PUSH_NOTIFICATIONS_SETTINGS['APNS_TOPIC'] = "com.multy.herr.reviews"
我曾根据 this
尝试使用相同的 production
APNS 证书
开发服务器:api.sandbox.push.apple.com:443
生产服务器:api.push.apple.com:443
然而,都给我一样BadDevieToken
仅供参考:
我正在使用 production
APNS 证书
我只关心 Django 后端。我的 iOS 开发人员从他的计算机上传应用程序。我不确定这会不会有问题
我曾尝试 fastlane
与 pushtry.com
再次 .p12
有效,但 .pem
无效。弹出对话框production_com.xxx.yyy.zzz.pem | 3883 | application/x-x509-ca-cert
问题:
我哪里错了?
另一种解法:
我可能会使用 AWS SNS 来处理这个
如 README for django-push-notification 中所述:
If you are planning on running your project with APNS_USE_SANDBOX=True,
then make sure you have set the development certificate as your APNS_CERTIFICATE.
所以问题在于行:
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = "gateway.push.apple.com:2195"
有关使用 APN 调试应用程序与发布应用程序之间的区别的更多信息,您应该阅读
@Wyetro 是正确的。问题来自那一行,我在它使用 bool
的库本身的某个级别与文档和代码库混淆
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = False
那我就可以发消息了
我在 Whosebug 上进行了搜索,但其中 none 回答了我的问题
从 Xcode 构建 APNS 有效,但我的后端提高了 App Store 版本 BadDeviceToken
。
Success
是 registration_id
由源代码
In [1]: APNSDevice.objects.all().send_message("test")
Out[1]:
[{'27321a3d872613499e27638733e9d1da7e6aa52888a2d90769b150f6339360b1': 'Success',
'798a23a46169e405c41a0c9f44faa0acd39a65119960b973acd248a6de1d624e': 'Success',
'1d742a9ae1684fed5e6c672587ee27c1523cc97e931cc64f108f7c4924aba2af': 'DeviceTokenNotForTopic',
'27173de1aed3a065644708602fd5659cf4e0f8c3ce5b3ef7c4b0769655b92041': 'DeviceTokenNotForTopic',
'e5647247877a0e1db3c7b52821b4230551267ca8a360f862ec5dde506e9b2f36': 'Success',
'0eecae0cb6f4c27ee4b915e37dbb9c7cc84e4967e71c8efab808e231f46b8ec6': 'BadDeviceToken',
'582d6a7c4628131cba9d0dfa9096cc81e3b48f6b6409252515d7402ef1c3ef30': 'BadDeviceToken'}]
我暂时不关心 DeviceTokenNotForTopic
。只关注 BadDeviceToken
重现步骤为:
- 关注this获取
.p12
个文件 - 然后从doc生成
.pem
。我必须把passphrase
放到key
否则我无法进行下一步 - 从 App Store 下载我自己的应用程序并登录以获取
registration_id
支票:
pushtry.com
我上传.p12
放registration_id
。它有效我可以得到push notification
openssl s_client -connect gateway.push.apple.com:2195 -cert aps-cert.pem -key aps-key-noenc.pem
也可以正常工作。连接仍然存在
我的配置:
Django3
django-push-notification @master 提交:c610dd9c7871f4e81bdffce783df8b040ca22878
settings.py
PUSH_NOTIFICATIONS_SETTINGS['APNS_CERTIFICATE'] = str(APPS_DIR) + '/push_noti/dd/aps.pem'
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = "gateway.push.apple.com:2195"
PUSH_NOTIFICATIONS_SETTINGS['APNS_TOPIC'] = "com.multy.herr.reviews"
我曾根据 this
尝试使用相同的production
APNS 证书
开发服务器:api.sandbox.push.apple.com:443
生产服务器:api.push.apple.com:443
然而,都给我一样BadDevieToken
仅供参考:
我正在使用 production
APNS 证书
我只关心 Django 后端。我的 iOS 开发人员从他的计算机上传应用程序。我不确定这会不会有问题
我曾尝试 fastlane
与 pushtry.com
再次 .p12
有效,但 .pem
无效。弹出对话框production_com.xxx.yyy.zzz.pem | 3883 | application/x-x509-ca-cert
问题:
我哪里错了?
另一种解法:
我可能会使用 AWS SNS 来处理这个
如 README for django-push-notification 中所述:
If you are planning on running your project with APNS_USE_SANDBOX=True,
then make sure you have set the development certificate as your APNS_CERTIFICATE.
所以问题在于行:
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = "gateway.push.apple.com:2195"
有关使用 APN 调试应用程序与发布应用程序之间的区别的更多信息,您应该阅读
@Wyetro 是正确的。问题来自那一行,我在它使用 bool
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = False
那我就可以发消息了