我注意到APNS生产环境和开发环境之间didReceiveRemoteNotification的不同行为。在开发模式(使用开发配置文件构建)中,当用户点击通知时将调用此方法。在后台和事件状态下。但在生产模式下(使用临时配置文件构建)如果应用程序在后台或未激活,则当用户点击通知时会调用此方法,但当应用程序处于事件状态时,此方法会在收到通知时立即调用.谁能帮我理解这种不同的行为?我希望我的用户在点击通知(处于事件状态)时重定向到另一个屏幕,但由于这种行为,他会自动重定向到其他屏幕。 最佳答案 你的问题让我很困惑,我做了一个测试,“在开发
我在我的应用程序中设置了推送通知。我正在尝试确定我在application:didRegisterForRemoteNotificationsWithDeviceToken:方法中从APNS收到的设备token是否来自沙盒或开发环境。如果我能够区分哪个环境初始化了token,我就能够告诉我的服务器向哪个环境发送推送通知。我已经尝试使用DEBUG宏来确定这一点,但是我看到了一些奇怪的行为并且不相信它是100%正确的。#ifdefDEBUGBOOLisProd=YES;#elseBOOLisProd=NO;#endif理想情况下,我能够检查代码中的aps-environment权利(值为D
向iOS用户发送通知时,我收到其中一些用户的响应状态代码400(BadDeviceToken)或代码410(未注册)。来自关于“BadDeviceToken”的Apple文档:Thespecifieddevicetokenwasbad.Verifythattherequestcontainsavalidtokenandthatthetokenmatchestheenvironment.“坏”是什么意思?我知道设备token在早些时候是有效的。用户做了什么使其设备token变坏?来自关于“未注册”的文档:Thedevicetokenisinactiveforthespecifiedtop
如图所示,当我想创建ProductionSSLCertificate时,正常的类型应该是[APNsDistributioniOS],但是我创建的Certificate是[ApplePushServices],这是怎么回事? 最佳答案 “AppleDevelopmentiOSPushServices”和“AppleProductioniOSPushServices”是证书的旧名称,当您需要为两个环境分别使用证书时。现在,对于新的HTTP/2API,您只需要一个证书,因此他们将证书的名称更改为更通用的名称-“ApplePushServi
我的应用程序现已在应用程序商店中提供,因此我已将其下载到我的设备上。推送通知在开发过程中运行良好。我正在使用JavaPNS发送通知,并将其切换为指向Apple的生产服务器。但是,我现在从APNS服务器收到无效token错误。我将存档方案设置为“发布”,并将发布设置为使用此分发配置文件:在该配置文件中,您可以看到我已正确设置环境:但是我仍然得到错误。当我查看我的数据库时,我认为应用程序返回给我的设备token与开发设备token相同,所以这可能是问题所在。但我不知道为什么它会返回,因为应用程序已正确签名。这是我也用来测试的设备,会不会有问题?关于这里发生的事情还有其他想法吗?谢谢!编辑:
APNS在使用增强通知格式时,会在错误响应包中返回以下状态码。0-Noerrorsencountered1-Processingerror2-Missingdevicetoken3-Missingtopic4-Missingpayload5-Invalidtokensize6-Invalidtopicsize7-Invalidpayloadsize8-Invalidtoken255-None(unknown)我想知道这些状态代码中的哪一个实际上表明问题实际上与设备token有关(即:我可以在我的数据库中将特定设备token标记为无效或不活动)。当我收到值8作为状态代码时,我确信我可以安
我创建了一个应用程序来从网络服务器发送远程通知。当我在开发模式下测试应用程序时,所有通知都正确到达手机,在AppStore发布后,应用程序不再收到通知。这是我做的:创建了一个用于生产的私钥和一个用于开发的私钥。通过传递先前生成的CertFile,在我的AppID上生成了两个SSL证书。我100%确定已正确生成2个key并正确传递它们以从AppID下的开发中心下载SSL证书。创建了一个用于开发的.pem文件和一个用于生产的文件(通过转换从我的KeyChain等中提取的文件.p12)。创建了2个不同的配置文件,一个用于开发,一个用于生产,并连接到第1步的AppID。使用在第4步中创建的正确
我正在尝试适用于iOS平台的GoogleCloudMessaging示例应用程序。https://developers.google.com/cloud-messaging/ios/start要生成GoogleServices-Info.plist,需要APNS开发和生产证书(PKCS#12文件格式)。我在MACKeyChainAccess中创建了.p12文件(捆绑了APNS开发证书和私钥)。但是上传.p12文件时,提示格式不正确(证书必须是有效的PKCS12文件)。 最佳答案 这是我的解决方案,没有终端!删除您的实际证书(在钥匙串
我意识到有一个关于允许多个服务器使用相同的SSL证书向同一个应用程序发送推送通知的问题,但我的问题是不同的。假设单个iOS应用程序的开发人员希望允许多个提供者向他的应用程序发送推送通知,但希望控制哪些提供者有权向他的应用程序发送APN(并能够撤销该特权来自其中任何一个)。如果所有供应商都有相同的证书,为了阻止其中一个供应商发送APN,他必须阻止所有供应商(通过撤销PushSSL证书,并获得一个新证书)。是否可以从Apple为同一应用程序获取多个PushSSL证书?这样就可以为每个提供者分配一个唯一的证书,这将允许阻止单个提供者而不阻止其他提供者。在AppleProvisioningPo
我一直在阅读一堆Apple的文档,以及许多其他SO问题,但还没有找到这个特定问题的答案。我有一个现有的工作流程来为QA成员和Beta测试人员生成AdHocDistribution版本。现在我已经添加了对推送通知的支持,我希望这些通知路径也能够进行测试。我的印象是开发人员构建,使用开发配置文件签名,生成用于沙箱/开发APNS环境的token,以及分发构建,使用分发配置文件签名(无论是用于AdHocDistribution还是AppStoreDistribution),为生产APNS环境生成token。我相信这可以通过打开不同的.mobileprovision文件并检查aps-enviro