我知道这是覆盖了很多地方,但我不明白这一点。 我使用Urban Airship来推送通知。 一切似乎都很好,除了当我的应用程序在后台 – didReceiveRemoteNotification没有得到调用。 它在前台工作 – 我能够正确处理消息。 如果从通知中心点击消息,我可以从启动选项中获取消息。 但在后台发送消息时,iOS会显示警报 – didReceiveRemoteNotification不会被调用。 当我点击我的应用程序图标(不是来自通知中心内)的应用程序来到前台,我不知道通知是存在的。 有任何想法吗?
我们的应用程序使用APNS来接收推送通知。 然而,我们的客户声称,他们的一些设备没有收到通知,并认为他们“必须”确保通知100%交付。 但是我已经在某个地方看到,APNS不是100%可靠的,应该有这样的情况,通知没有交付。 目前我很担心如何确保APNS随时可以收到。 我已经读过一个可能APNS没有交付的情况(设备可能离线)。 但是,我们的testing显示,即使设备在线(无线或3G),有时APNS没有交付。 APNS有没有可能交付的具体情况? 还是有什么我们(开发人员)可以使用代码来确保接收所有通知? 我在代码中所做的只是将应用程序注册到远程通知,然后写入didRegisterForRemoteNotificationsWithDeviceToken,然后将设备令牌丢给我们的服务器。 任何帮助将不胜感激,因为我们的客户几乎杀了我们,如果他们的设备都没有收到APNS!
我的问题是我想显示一个加载屏幕的初始推送通知提示“该应用程序想发送推送通知。” 所以,如果用户点击yes我可以继续,然后启动应用程序,然后调用委托方法: – (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { [self hideLoadingScreen]; } – (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { [self hideLoadingScreen]; } 但是,如果用户打no ,这些方法都不会被调用,这是有道理的。 我的问题是,是否有不同的委托方法会被拒绝? 我的问题是,如果noselect,加载屏幕永远不会消失。 所以我不知何故需要知道用户何时完成select。
最近在Google I / O活动中,Google重新整理了Firebase并添加了许多新function,并对其余部分进行了修改。 我一直试图通过Firebase将iOS推送通知实现到我的应用程序的最基本的级别,所以我创build了一个非常简单的应用程序,除了接收远程推送通知之外什么都不做。 在Firebase内部,我已经上传了我的证书,在Xcode中,我的configuration文件已经添加到目标和项目中,并且在Firebase中我已经上传了正确的证书。 下面是我的AppDelegate.swift文件中包含的代码,但因为我的ViewController.swift是“空的”,我没有包括它。 虽然没有崩溃或运行时错误,当我加载应用程序,我接受通知。 然后,我退出应用程序并closures我的设备。 在Firebase中,我将通知发送到正确的应用程序。 几分钟后,Firebase表示通知“已完成”。 但是,我从来没有收到设备上的通知。 因此,总而言之,我需要一个解决scheme来发送Firebase此设备deviceToken ,然后使用“Firebase通知”发送推送通知消息。 任何帮助我的代码或一般将不胜感激,我希望这有助于未来的观众。 谢谢! 我在AppDelegate.swift代码: import UIKit import Firebase import FirebaseMessaging @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { FIRApp.configure() let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] let notificationSettings = UIUserNotificationSettings(forTypes: […]
我正在尝试为IOS和Android客户端使用GCM。 当应用程序处于前台时,它似乎可以正常工作,但是,当应用程序处于后台时,通知中心不会收到消息,并且didReceiveRemoteNotification with completionHandler不会被调用。 我将问题确定为从GCM到APNS的错误格式的消息。 也就是说,这就是它的样子: [消息:新消息,collapse_key:do_not_collapse,来自:**************] 而IOS推送通知在通知中应该有aps关键字,对吗? 以及内容可用设置为1.例如: {“aps”:{“content-available”:1},“data-id”:345} 顺便说一下,前台应用程序收到消息,问题只是背景。 任何build议,我应该如何解决一个问题,使GCM工作的iOS和Android? 更新 :这是我在网上find的: 关于实际的通信,只要应用程序在iOS设备的后台,GCM使用APNS发送消息,应用程序的行为与使用Apple的通知系统类似。 但是,当应用程序处于活动状态时,GCM将直接与应用程序通信 所以我在前台模式下收到的消息: [消息:新消息,collapse_key:do_not_collapse,来自:**************] 是来自GCM的直接信息(APNS根本没有参与这个事情)。 所以问题是:APNS是否重新格式化GCM发送给它以坚持ios通知格式? 如果是这样,我怎么知道APNS实际上做了什么,并且是否以不同的格式向我发送通知? 有没有办法查看来自APNS的input数据的日志? 更新:好吧,我设法改变消息的结构,现在在前景模式下,我收到以下消息: 收到通知:[“aps”:{“alert”:“Simple message”,“content-available”:1},collapse_key:do_not_collapse,from:**************] 现在看起来格式不错,但是当应用程序在后台时还是没有反应。 didReceiveRemoteNotifification completionHandler不会被调用! 我应该看什么,问题在哪里? 方括号可以成为推送通知的问题吗? 更准确地说,ios不会发布任何警报/徽章/横幅从传入的通知。
我在我现有的应用程序中configuration了GCM,并在那里接收通知。 现在我面临两个问题:1)我没有收到通知当我退出应用程序或应用程序在后台。 2)我没有收到iphone的通知区域通知,只有当我的应用程序正在运行我只直接接收警报消息那里。 当我拉下通知区域时,我在xcode的控制台中看到这条消息: “无法连接到GCM:操作无法完成(com.google.gcm error 2001.)” 我的PHP文件在下面 <?php // Payload data you want to send to iOSdevice(s) // (it will be accessible via intent extras) $data = array( 'message' => 'Hello World!'); // The recipient registration tokens for this notification // http://developer.android.com/google/gcm/ $ids = array( 'kucy6xoUmx********eeRsla' ); // Send a GCM push sendGoogleCloudMessage( $data, […]
当我阅读Apple Docs时 ,他们提到了3种types的通知:本地,远程和无声。 本地通知可以从应用程序本地发送的名称中推断出来。 但是,其他两种types有什么不同呢? 非常感谢。