Ios 开发推动与分销推动

Ios 开发推动与分销推动,ios,cocoa-touch,apple-push-notifications,Ios,Cocoa Touch,Apple Push Notifications,我们这里的推送服务遇到了一些问题。。 我们的应用程序在AppStore上已经有一段时间了,我们想第一次尝试推送。不是发送给每个人,只是发送到我的设备 我们遵循了设置一切的原则,并且在开发过程中工作得非常好。后来,当应用程序在AppStore上上线时,我们对分发做了同样的事情。(也许不是按顺序排列) 无论如何,在推送上线后,我们从未真正测试过它(我们的服务是一种新闻服务,应该在我们选择时向所有设备发送通知)。 我运行了一个调试,将我设备的令牌注册到一个不同于其他sql表的sql表中,然后直接从ap

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

我们遵循了设置一切的原则,并且在开发过程中工作得非常好。后来,当应用程序在AppStore上上线时,我们对分发做了同样的事情。(也许不是按顺序排列)

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

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

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

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

我现在不知道该怎么办。我想要么我的iPhone和iPad都坏了,要么被推送服务忽略了,要么我同事的手机是唯一能收到推送服务通知的设备

当我使用.php代码编写
fwrite
并将通知发送到gateway.push.apple.com时,它返回它已成功将消息发送到所有设备(但即使应用程序已从设备中删除,情况也是如此)

我自己制作了这个.pem文件,来自我机器上新创建的请求/密钥/配置文件等

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

编辑

我们现在已经尝试了一整批东西,它现在有点工作了,但我不知道发生了什么,它现在是如何工作的

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

怎么做

如果我将新表中的设备令牌与旧表中的设备令牌进行交叉检查,则它们都在两个表中。 首先,我用来获取我的设备令牌的方法是在其中某个地方使用不同的url构建我的项目,我必须先删除AppStore版本。当运行这个“新”xcode版本时,它抛出了一个从未在AppStore版本中注册过的新令牌,因此当我尝试重新安装AppStore版本并仅向该令牌发送通知时,它从未通过-因为“当前”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中启动应用程序时,我的旧设备被关闭了。为什么会发生这种情况?

好吧,由于这个问题,我经历了很多头痛之后,终于找到了答案。我们的服务一直运作正常

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

当我从我的同事那里得到AppName.app文件时,它显然处于生产/发布-模式,从而为数据库提供了一个不同的设备

底线: 应用程序为调试发布提供不同的设备选项