我正在通过GCM在我的项目中推送通知。 我的应用程序能够在前台收到通知,但不能在后台收到通知。 我在方法里面收到一条消息 func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 当应用程序在前台,但我没有得到任何调用的方法 func application( application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) 当应用程序在后台模式。 我在互联网上search了很长时间,才知道这是我收到的有效载荷格式的问题。 我收到的有效载荷看起来像 [通知:{“body”:“任何东西”,“标题”:“任何标题”},优先级:高,content_available:true,至:kcF23gblKok ….,collapse_key:do_not_collapse,from:7812 ….] 任何人都可以build议我有效载荷的正确格式?
是否可以接收静默推送通知(“content-available”:“1”)并运行一个函数来更改NSUserDefaults.standardUserDefaults()数据,而用户不必点击该通知(通知中心没有通知,因为这是一个无声的推送通知)。 该应用程序根本没有运行(例如用户强制退出)。 我已经尝试了下面的代码,它的工作如果应用程序正在运行或在后台,但我也希望它的工作,如果应用程序是强制退出(根本不运行)。 我已启用后台提取和远程通知。 func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { handleNotification() } //this works, the someData is not a problem func handleNotification() -> Void{ let defaults = NSUserDefaults.standardUserDefaults() defaults.setValue(someData, forKey: "key") defaults.synchronize() } 当我发送推送通知时,如果应用程序处于活动状态或在后台,则数据会更新,但如果应用程序根本没有运行,则数据不会更新。
我在我的应用程序中实施推送通知,在开发部分工作正常,我收到推送通知。 当我决定在应用程序商店发布它时,我实现了它的分发(我使用证书和configuration文件进行分发),我做了相同的步骤,并通过应用程序将.p12文件转换为.pem, certificate.pem和key.pem到另一个文件ck.pem。 在PHP文件中,我做了以下操作: $passphrase = 'The passphrase I put it in the shall'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server $fp = stream_socket_client( 'ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 我已经改变了沙箱到SSL://gateway.push.apple.com:2195在我的PHP。 我用这个步骤创build了production.pem。 $ openssl x509 -in aps_developer_identity.cer -inform der -out PushChatCert.pem $ openssl […]
我想从iOS设备发送推送通知到另一个iOS设备,而不使用后端服务器。 iOS设备是否可以像服务器一样工作,并向APNs服务器发送推送通知? 提前致谢。
嗨,我已经按照教程在iOS上使用GCM。 它一直在间歇工作(这意味着所有的证书,权限和东西都可以)。 不过到最近,我一直在收到这两条错误消息: GCM | GCM registration is not ready with auth credentials GCM | GCM registration is not ready with auth credentials 。 此外,重新连接到GCM失败: Error Domain=com.google.gcm Code=501 "(null)" 这部分与设备没有获得GCM注册ID有关。 有没有其他人更频繁地遇到这些问题? 或者是因为我以不正确的顺序调用GCM API(尤其是connectWithHandler: , startWithConfig:和tokenWithAuthorizedEntity方法)? 我怀疑原因是后者,因为我经过一段时间才得到GCM ID。 我并不总是收到一个GCM ID。 当我没有收到一个,我通常必须通过Xcode运行一次或两次的应用程序。 (或通过强制closures应用程序)。 显然这不是我的用户应该做的事情。 这是我的GCM API调用的序列: 设备获取APNS令牌 然后我调用tokenWithAuthorizedEntity:通过使用我的APNS令牌 ^这通常会导致上面提到的那两个错误之一。 每当我真的需要一个GCM令牌时,我通过再次调用tokenWithAuthorizedEntity强制重新获取GCM令牌。 另外,我connectWithHandler:我的applicationDidBecomeActive:方法中写入了connectWithHandler: call。 几个问题: 是connectWithHandler:的调用connectWithHandler:在applicationDidBecomeActive:必要时,如果我只是有兴趣接收GCM推送消息,而不是向上游发送? 如果对(1)的回答是肯定的,则在该方法的完成处理程序中,如果发生错误,并且我没有GCM标记,那么我应该尝试再次获取标记吗? (即调用tokenWithAuthorizedEntity ?) […]
我似乎无法摆脱这种困扰。 如文件中所述的APNS具有尽力而为的交付,即不保证交付。 但是,如果我要在我的客户端/服务器应用程序中使用推送通知模式,我必须以某种方式使用它们。 通用模型如下所示:服务器上有新数据 – >然后服务器发送推送通知,通知客户端有新的数据可用 – >客户端下载新数据。 那么问题是,如果我不能100%地依靠通知来交付,我可以使用什么样的回退机制,以便我可以确保客户端接收服务器上可用的新数据? 如何确保客户使用APNS获得最新的数据?
有没有办法设置用户如何看到推送通知警报框? 我的通知出现没有查看/取消button,但我从这些button接收不同的应用程序的其他人。 发送推送通知之前,我应该设置一个设置吗? 谢谢!
我有一个应用程序需要与服务器(每24小时刷新一次数据)进行一次通信。 即使应用程序未打开,也不需要在后台进行这种操作。 理想情况是我想要的是: 每24小时,我的服务器发送一个推送通知给iPad 这会唤醒应用程序,并运行刷新数据所需的代码 通知然后被丢弃 这有可能吗? 用户点击通知后,应用程序才会被唤醒吗? 或者我可以在显示通知之前运行一些代码? 我甚至可以放弃通知消息? 如果推送通知不是正确的方法来做到这一点,是什么? 多谢你们!
我正在push notifications应用程序,但通知来临时badge count不会增加。 我在stack overflow看到了很多例子,但没有一个是有用的。 任何人都可以build议我如何解决这个问题…在此先感谢! 我的服务器端PHP代码: <?php // Put your device token here (without spaces): $deviceToken = 'c0d35d5f5ab179f0a93cb7c6b89b96b305ad3517b24e454abd4517e2323f4a7a'; // Put your private key's passphrase here: $passphrase = '12345push'; // Put your alert message here: $message = 'My First push notification!'; //$badge = 3; //////////////////////////////////////////////////////////////////////////////// $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', […]
我正在开发一个iOS应用程序,并希望使用Firebase实时数据库来实现推送通知等行为。 如果我的应用程序正在监听一些firebase节点,并且我将在节点更新的情况下向用户发送本地推送通知。 问题是,如果应用程序没有运行,即用户已经杀死了它,我的应用程序将继续收听该特定节点? 我想,在Android中,我们已经支持这个,就像这个链接( 链接 )所解释的那样。 我们可以在iOS中实现相同的行为吗? 如果不是,可以select什么? 谢谢 更新 : 1-在iOS应用程序中没有像在本地触发推送通知一样。 我想实现远程通知的行为,这是不能做到的。 2-就听某些事件而言,当应用程序不在前台或后台时,不能完成。