據我所知,didReceiveLocalNotification
會被解僱兩次。首先它會在本地通知被觸發時觸發,然後在用戶選擇它時觸發。didReceiveLocalNotification被解僱了兩次
有什麼辦法可以知道用戶選擇觸發了didReceiveLocalNotification
嗎?
當通知觸發時(同時保持應用程序打開),如果我保持抽屜打開,應用程序會自動導航到屏幕。我不希望它發生。只有當用戶進行選擇時,它才能導航到特定的屏幕。
在此先感謝。
據我所知,didReceiveLocalNotification
會被解僱兩次。首先它會在本地通知被觸發時觸發,然後在用戶選擇它時觸發。didReceiveLocalNotification被解僱了兩次
有什麼辦法可以知道用戶選擇觸發了didReceiveLocalNotification
嗎?
當通知觸發時(同時保持應用程序打開),如果我保持抽屜打開,應用程序會自動導航到屏幕。我不希望它發生。只有當用戶進行選擇時,它才能導航到特定的屏幕。
在此先感謝。
當通過通知啓動應用程序時,應用程序委託啓動選項應該包含密鑰UIApplicationLaunchOptionsLocalNotificationKey
,它向您提供與通知關聯的UILocalNotification。
如果應用程序是開放的,你的目標是iOS 8的那麼一個新的處理程序添加
// Called when your app has been activated by the user selecting an action from a local notification.
// A nil action identifier indicates the default action.
// You should call the completion handler as soon as you've finished handling the action.
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler NS_AVAILABLE_IOS(8_0);
也嘗試檢查LocalNotification是導致應用程序推出接着
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
當你設置本地通知您可以獲取用戶字典,您可以在其中設置唯一ID以跟蹤
notification.userInfo = [NSDictionary dictionaryWithObject:unique_id forKey:@"uniqueId"];
當應用程序處於狀態不活動(與OS通知拉下來),didReceiveLocalNotification
似乎被調用兩次。 1.當通知到達 2.如果用戶點擊通知
你可以做的是抓非活動狀態在步驟1,不執行你的縮進動作。
或者你也可以做相反的是,從通知中心移除通知,以便爲用戶不能點擊它(步驟2)
if (UIApplication.sharedApplication().applicationState == .Inactive) {
application.cancelLocalNotification(notification)
}
但我的問題是,當應用程序被打開,我拉下通知屏幕的抽屜。那麼有沒有辦法知道?在那種情況下'didfinishlaunchingwithoptions'方法不會被調用嗎? –
是的,爲了處理2種方式,我更新了我的答案。 – Retro