【问题标题】:detect app opened from push notification (background fetch)检测从推送通知打开的应用程序(后台获取)
【发布时间】:2015-06-23 03:50:29
【问题描述】:

我使用 UIBackgroundFetchResult 来捕获推送通知,如下代码...我还使用内容可用性 = 1 来检测后台模式

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)   (UIBackgroundFetchResult))completionHandler {

推送即将到来,并在应用程序处于活动状态或始终处于后台模式时在此处执行 但是当我打开推送时,我无法检测到应用程序是否从推送中打开,因为它总是进入 if 状态

 if ( (application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground)  && (NotiType == 1 || NotiType == 2))
    {

}

【问题讨论】:

标签: ios objective-c notifications push


【解决方案1】:

您可以通过应用委托方法检查您的应用是否从 APNS(Apple 推送通知服务)启动

application:didFinishLaunchingWithOptions:

您可以在其中检查应用程序是否从通知中启动,

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if (launchOptions != nil) {
          // Launched from push notification
          NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    }
}

如果您的应用在后台,则不会调用此方法。为此,您可以使用这种方式检查另一种方法,

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )
    {
         //opened from a push notification when the app was on background
    }
}

HTH,享受编码!

【讨论】:

  • 从不点击第二个函数,因为我使用内容可用性 = 1 它正在处理 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^) (UIBackgroundFetchResult ))completionHandler {
  • 没有得到你,你能详细说明一下吗?
  • 我不使用 didreceiveremotenotification 我使用 fetchCompletionHandler:(void (^) (UIBackgroundFetchResult))completionHandler {
猜你喜欢
  • 2013-04-29
  • 2015-11-17
  • 1970-01-01
  • 2014-06-06
  • 2016-06-22
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多