ios - 使用 GCM ios 9 时我应该在哪里处理推送通知

标签 ios objective-c push-notification google-cloud-messaging apple-push-notifications

我已将我的应用设置为与 GCM 配合使用。

我已成功添加代码以将 GCM 集成到我的应用程序中。

现在我有两种方法来处理推送通知:

  1. Default Method
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {

NSLog(@"Notification received: %@", userInfo);
// This works only if the app started the GCM service
[[GCMService sharedInstance] appDidReceiveMessage:userInfo];

}
  1. GCM 方法

    - (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
     fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler {
    
       NSLog(@"Notification received: %@", userInfo);
    
     // This works only if the app started the GCM service
     [[GCMService sharedInstance] appDidReceiveMessage:userInfo];
    // Handle the received message
    // Invoke the completion handler passing the appropriate   UIBackgroundFetchResult value
     // ...
     }
    

现在我很困惑应该在哪里处理我的Notificaiton

我应该在哪里检查应用程序状态并调用我的方法来处理它。

我是否应该在这两个方法中都编写方法。

最佳答案

我不熟悉 GCM,但是您列出的两种通知方法是标准的 UIApplicationDelegate 方法并处理不同的场景。

application:didReceiveRemoteNotification: 在应用程序打开并且您收到普通推送通知时调用。您通过通知中心收到提醒的类型。

application:didReceiveRemoteNotification:fetchCompletionHandler: 当服务器让应用程序知道有东西要下载时调用。您检查 userInfo 以了解要下载的内容,启动下载并在 NewData/NoData/Failed 时调用处理程序 (UIBackgroundFetchResult)

不确定 GCM 使用这两种方法做什么,但根据这些信息您应该能够弄清楚。

关于ios - 使用 GCM ios 9 时我应该在哪里处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955111/

相关文章:

android - 当应用程序在后台使用 firebase 时,使推送通知显示为弹出窗口

ios - Swift:从另一个类调用 UIButton press

ios - 从 NSData 确定 MIME 类型?

iphone - 检测程序化 UIScrollView 滚动的结束

objective-c - 什么会导致 CGDisplayCreateImageForRect 捕获或忽略光标?

c# - 适用于 chrome、firefox 和 safari 浏览器的 Azure 浏览器推送通知

android - 在 Android 上解析推送通知

ios - MultiPeer Framework 委托(delegate)未触发/运行(无 UI)

ios - 应用内购买收据验证矛盾

ios - 没有指定 'teamID' 并且在 ionic 的存档中找不到团队 ID