2015-06-19 83 views
2

我正在使用遠程通知來喚醒我的應用程序並有條件地觸發UILocalNotification。iOS UILocalNotification僅在應用程序未運行時發出聲音(無警報)

我發現如果這個通知是在應用程序沒有運行時觸發的,我得到的只是通知聲音(沒有警報/通知)。如果應用程序在後臺,它會按預期工作。

註冊爲遠程通知中的AppDelegate:

let settings = UIUserNotificationSettings(forTypes: (.Badge | .Sound | .Alert), categories: nil) 
application.registerUserNotificationSettings(settings) 
application.registerForRemoteNotifications() 

創建/ UILocalNotification的燒成(作爲didReceiveRemoteNotification結果)

var notification = UILocalNotification() 
notification.alertTitle = "My App" 
notification.alertBody = "Hello World!" 
notification.soundName = UILocalNotificationDefaultSoundName 
UIApplication.sharedApplication().presentLocalNotificationNow(notification) 

據我可以從文檔告訴,通知的行爲,當該應用程序在後臺,根本不運行應該是相同的。

當系統提供本地通知時,可能會發生幾種情況,具體取決於應用程序狀態和通知類型。如果應用程序不是最前面並且可見,則系統顯示警報消息,標記應用程序並播放聲音 - 無論通知中指定了什麼內容。如果通知是警報,並且用戶點擊操作按鈕(或者,如果設備被鎖定,則拖動打開操作滑塊),則應用程序被喚醒或啓動。

來源:UILocalNotification Documentation

見識到了什麼是怎麼回事,非常感謝!

+0

運行設置應用程序並轉到您的應用程序頁面。檢查您的應用的通知設置。 – rmaddy

+0

我已驗證應用程序的通知設置已啓用。正如我所提到的,當應用程序處於後臺時,所有功能都可以正常工作,但不是在我明確關閉它時(通過將其滑開) – Rhinon

回答

1

該問題與顯示本地通知無關。

正如你在你的問題中所說的,你使用遠程通知來觸發打開你的應用程序,然後運行代碼來有條件地顯示本地通知。

爲什麼這不工作的原因是:

你的代碼來顯示一個本地通知是不能從遠程通知運行後用戶已強制關閉應用程序(通過刷卡了)!

你可以找到更多關於這方面的開發者論壇在這裏: https://devforums.apple.com/message/873265#873265(DEV賬號登錄該電源線)

也請記住,如果你從應用切換器殺死你的應用程序(即向上滑動殺該應用程序),然後操作系統將永不重新啓動應用程序,無論推送通知或後臺提取。在這種情況下,用戶必須手動重新啓動應用程序一次,然後從該點開始後臺活動將被調用。

+0

謝謝,這似乎確實如此。似乎我應該將我的決定點放在向我的Web服務器顯示的通知上,以確保可靠的通知。 更多的信息在這裏:http:// stackoverflow。COM /問題/ 19068762 /意志IOS推出-MY-APP-到最底,如果-IT-是,強制退出,由這用戶 – Rhinon

相關問題