【问题标题】:How to determine whether the UILocalNotification is tapped without checking application state?如何在不检查应用程序状态的情况下确定是否点击了 UILocalNotification?
【发布时间】:2015-03-19 12:04:40
【问题描述】:

我正在创建一个应用程序,当我点击 UILocalNotification 时应该打开特定的视图控制器。我的代码是:

func application(application:UIApplication!, didReceiveLocalNotification notification: UILocalNotification)
{
  var root = self.window!.rootViewController as ViewController
  let main: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
  var setview = main.instantiateViewControllerWithIdentifier("destination") as tapViewController

  if application.applicationState == UIApplicationState.Inactive
  {
     root.presentViewController(setview, animated:false , completion: nil)
  }
}

当我从我的应用程序下拉通知中心时,即使我没有点击通知,也会显示 TapViewController,因为当我这样做时,应用程序状态正在从非活动变为活动。

那么在这种情况下如何检测通知是否被点击?与应用程序状态一起检查的条件是什么?

【问题讨论】:

标签: ios swift notifications uilocalnotification appdelegate


【解决方案1】:

在收到通知时尝试使用此代码检查活动/非活动状态。

func application(application: UIApplication, didReceiveLocalNotification userInfo: [NSObject : AnyObject]) {

    if application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background {
        //opened from a push notification when the app was on background

    }

}

【讨论】:

  • 尝试了您在代码中提到的更改,但输出与我在问题中提到的相同。当应用程序从活动状态转换为非活动状态时,会出现此问题。 :( 当我在应用程序处于后台时点击通知时,它工作正常@SVMRAJESH
【解决方案2】:

试试这段代码(用Objective C编写,你可以轻松切换到Swift)

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

    NSAssert(notification.fireDate != nil, @"Please use scheduleLocalNotification instead of presentLocalNotificationNow with fireDate.");

    // 0.2s is threshold time, you can adjust it
    if (application.applicationState != UIApplicationStateActive && [notification.fireDate timeIntervalSinceNow] < -0.2) {
        // user tapped the notification
        ...
    }
}

我不明白为什么苹果不提供检查通知是否被点击的方法。

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 2017-02-09
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多