首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从App下载应用程序获得BadDeviceToken,从源代码构建

从App下载应用程序获得BadDeviceToken,从源代码构建
EN

Stack Overflow用户
提问于 2020-02-10 16:39:39
回答 2查看 213关注 0票数 1

我已经搜索过Stackoverflow,但是它们都没有回答我从Xcode APNS构建的问题,但是answer版本我的后端会引发BadDeviceToken

Success是由源代码生成的registration_id

代码语言:javascript
复制
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

复制的步骤是

  1. 遵循获取.p12文件
  2. 然后将.pem文档中进行。我必须将passphrase设置为key,否则我无法继续下一步
  3. 从app下载我自己的应用程序并登录以获得registration_id

检查:

  1. pushtry.com我上传.p12并上传registration_id。我可以得到push notification
  2. openssl s_client -connect gateway.push.apple.com:2195 -cert aps-cert.pem -key aps-key-noenc.pem的工作也没有任何问题。连接仍然存在。

My配置:

Django3

django-推通知@主提交:c610dd9c7871f4e81bdffce783df8b040ca22878

settings.py

代码语言:javascript
复制
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"

我试过使用相同的production APNS证书,根据

开发服务器: api.sandbox.push.apple.com:443

生产服务器: api.push.apple.com:443

然而,都给了我同样的BadDevieToken

FYI:

我正在使用production APNS证书。

我只负责Django后端。我的iOS开发者从他的电脑上传应用程序。我不确定这会不会有问题

我再次尝试了fastlanepushtry.com.p12 works,但是.pem没有。弹出对话框production_com.xxx.yyy.zzz.pem | 3883 | application/x-x509-ca-cert

问题:

我哪里错了?

另一个解决方案:

我可能会用AWS SNS来处理这个问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-13 04:21:44

@惠特罗是正确的。这个问题来自于我在库本身的某些级别上与文档和代码基混淆的那一行,它使用bool

PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = False

然后我就能发出信息

票数 1
EN

Stack Overflow用户

发布于 2020-02-10 22:30:36

正如django自述-推送通知中所指出的

代码语言:javascript
复制
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.

因此,问题在于这句话:

代码语言:javascript
复制
PUSH_NOTIFICATIONS_SETTINGS['APNS_USE_SANDBOX'] = "gateway.push.apple.com:2195"

有关使用APN进行应用程序的调试和发布版本之间的差异的更多信息,请阅读iOS APNS开发[沙箱]与生产

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60154694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档