【问题标题】:Development Push vs Distribution Push开发推送与分发推送
【发布时间】:2013-01-23 00:50:23
【问题描述】:

我们在这里的推送服务遇到了一些问题.. 我们的应用已经在 AppStore 上架了一段时间,我们想第一次尝试我们的 Push。不发送给所有人,只发送给我的设备。

我们按照this guide 进行了所有设置,并且在开发过程中运行良好。后来,当应用在 AppStore 上发布时,我们对分发做了同样的事情。 (可能不是这个顺序)

无论如何,我们在推送上线后从未真正测试过推送(我们的服务是一种新闻服务,应该在我们选择时向所有设备发送通知)。 我运行了一个调试程序,将我的设备令牌注册到与其他设备不同的 sql 表中,然后直接从 appstore 重新下载了应用程序。我没有收到注册通知的提示,但我知道我是第一次这样做,我什至可以在“设置”中看到它。

我使用我们的 .php 网站向表中的“所有”设备(目前只有我的设备)发送消息,但我什么也没做。我在我的 iPad 上下载了相同的应用程序,并将令牌添加到数据库中,发送了一条新消息,但他们都没有收到它。

我们将我同事的令牌添加到同一个数据库中,他从 AppStore 下载了应用程序,将消息发送到新表中的所有设备(现在是三个设备),只有他收到了消息。

他的手机可能包含一些早期的重要个人资料,但这一切都在生产中,应该没什么可说的,对吧?

我现在不知道该怎么做。我认为我的 iPhone 和 iPad 都被推送服务损坏或忽略了,或者我同事的手机是唯一会从该服务收到通知的设备..?

当我使用 .php-code 到 fwrite 并将通知发送到 gateway.push.apple.com 时,它返回它已成功将消息发送到所有设备(但即使应用程序有已从设备中删除。)

我自己根据我的机器上新创建的请求/密钥/配置文件等创建了 .pem 文件。

我们的推送服务没有发送到我的设备是否有原因?还是到目前为止只属于他? 它与证书、配置文件、密钥等有什么关系吗?

编辑

我们现在一直在尝试很多东西,它kind of works now,但我不知道发生了什么,以及它现在是如何工作的。

我们做了什么: 我的同事打开了他的 XCode 项目,将所有内容都设置为 Release,然后按下 Build。他给我发了 AppName.app,我把它拖到了 iTunes,并告诉它安装那个应用程序。 (现在 AppStore 版本和 Xcode 版本之间的唯一区别是 DeviceTokens 应该注册在另一个表中,正如我之前提到的)。当我启动应用程序时,我注意到注册了第四个令牌。我的意思是我的设备的 deviceToken 已经改变了。我知道这种情况时有发生,但这应该不是问题。当我尝试使用新应用程序发送通知并注册新令牌时,我收到了它。如果我卸载他发给我的版本,然后重新下载 AppStore 版本,并向 NEW device-token 发送通知,我现在会收到它。

怎么做?

如果我将新表中的设备令牌与旧表交叉检查,它们都在两者上。 我最初用来获取我的设备令牌的方法是在其中某处使用不同的 url 构建我的项目,并且我必须首先删除 AppStore 版本。运行这个“新”xcode-version 时,它会吐出一个从未在 AppStore-version 中注册过的新令牌,因此当我尝试重新安装 AppStore-version 并仅向该令牌发送通知时,它从未通过 -因为“当前”deviceToken 隐藏在原始表中,而不是新表中。

新问题:

为什么我的 deviceToken 会从一个版本更改为另一个版本?

为了更清楚地了解我认为发生的事情:

1. AppStore-app launch - Table.regDeviceToken = 111;
2. AppStore-app launch2- Tabke.regDeviceToken = 222; //(it updated itself)
3. Xcode launch - Table2.regDeviceToken = 111; //This is the Token I found and used
4. AppStore-app lauch4 - Table1.regDeviceToken = 222 //This is hidden from me, I thought it would be 111.
5. Send push to Table2.DeviceToken=111; //Which does not work
6. Send push to Table.DeviceToken = 222; //Which works

所以,在 Xcode 中启动应用程序时,我得到了 OLD DeviceToken。为什么会这样?

【问题讨论】:

    标签: ios cocoa-touch apple-push-notifications


    【解决方案1】:

    好的,由于这个问题而头疼了很多之后,我终于找到了答案。我们的服务一直正常运行。

    当我使用我的 Xcode 项目获取我的设备令牌时,我得到了一个为开发制作的设备令牌。然后,当我尝试使用我们的 AppStore-app 向该令牌发送推送通知时,它没有通过。

    当我从同事那里得到 AppName.app 文件时,它显然处于 Production/Release 模式,因此给数据库一个 DIFFERENT 设备令牌。

    底线: 应用程序为 DebugRelease 提供不同的 deviceToken。

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多