草庐IT

objective-c - 应用从应用商店返回设备 token 的空值

coder 2024-01-14 原文

我已经通过推送通知发布了我的应用程序更新,但是当我检查我的服务器时,我注意到发送到数据库的 token 是“null”。我使用开发证书和临时生产证书进行了大量测试。两者都成功运行,但应用商店上的版本没有,我不知道为什么。我大约 2 周前发布了有关此问题的帖子,有人告诉我我不应该使用我用于临时的配置文件,所以我创建了一个具有相同 ID 的新配置文件。昨天发布了更新,但我仍然遇到同样的问题。我需要找到一个永久性的解决方案,因为我的用户对所有这些更新感到恼火,但我不知道如何测试,直到它在应用商店获得批准。

如果有人可以提供想法或帮助,我将不胜感激。提前致谢。

附言如果有帮助,我从我的设备上删除了我的应用程序,然后从应用程序商店重新安装了它……它没有问我是否想接收推送通知,但是从手机设置中为该应用程序启用了推送……

最佳答案

APNs 通信有 3 个步骤:

  1. 您的应用在 iOS 中的 appDelegate 中注册以接收 APN。这将为您提供一个 deviceToken,您应该使用它来发送通知。
  2. 您的应用将 deviceToken 发送到您的管理服务器
  3. 您的管理服务器与 Apple APNs 服务器连接以发送推送通知

在您的情况下,我知道您的问题出在第 1 步中,因为您说您的设备 ID 为空并且应用程序没有询问您有关 APNs 权限的信息。因此,更改您的服务器证书或从 gateway.sandbox.push.apple.com 切换到 gateway.push.apple.com 不会有帮助,因为错误发生在之前。

这显然是您的证书有问题。您应该检查您是否已在 Apple iOS Provisioning Portal 中完成所有必需的步骤:

  1. 使用您应用的 bundle 标识符创建一个 AppId。避免通配符,例如 *。
  2. 为您的应用配置 InAppPurchase 选项(这不是问题,因为用于通信中的第 3 步)
  3. 为使用 1 中使用的 AppId 的 Distribution 创建配置文件(我怀疑这可能是您的问题),然后下载
  4. 打开 XCode 项目设置并检查您的归档操作是否使用了在 3 中下载的正确配置文件。确保在管理器要求时选择正确的配置文件。 (如果上一步没有问题,那么这绝对是您的问题,因此请仔细检查或三次检查)。

如果您想在将二进制文件再次提交到 AppStore 之前确保生成的二进制文件具有正确的配置文件,请执行以下操作:

  1. 使用 Finder 打开二进制文件(首先,打开位于 Library/Developer/XCode/Archives/... 的存档,右键单击它并“显示包内容”,导航至/Products/Applications/youApp,显示包内容再次),
  2. 查找文件 embedded.mobileprovision 并使用文本编辑器打开
  3. 在二进制内容中,您应该能够本地化几个名为“application-identifier”和“aps-environment”的字段。检查它们是否具有正确的值。

我敢打赌,如果您检查以前存档的应用程序,您会看到一个不正确的配置文件。 这是您的应用不返回 deviceToken 的唯一原因。(除非它收到它但未正确发送到您的服务器,这是上述通信的第 2 步中的问题)。

关于objective-c - 应用从应用商店返回设备 token 的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996121/

有关objective-c - 应用从应用商店返回设备 token 的空值的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  3. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  10. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

随机推荐