介紹
我FCM/GCM如何工作的一個基本的瞭解,以及如何SWIFT應用手柄接收和發送這些推送通知處理該推送通知將顯示,當應用程序沒有運行
問題
當應用程序在前臺時,我做了一個代碼,我可以選擇將哪個通知顯示爲橫幅。
我把這個函數裏面的代碼裏面AppDelegate
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
然後我會過濾系統默認設置推送通知我把裏面NSUserDefaults
SWIFT 2.3或UserDefaults
爲迅速3
我有一個容易得到和設置看起來像這樣的類
class Persistence {
static let defaults = NSUserDefaults . ....
static var doShowMessageNotification:Bool {
get {
return defaults.get ...
}
set(value) {
defaults.set ...
}
}
}
// you get the idea
然後再didRecieveRemoteNotification
switch Persistence.doShowMessageNotification {
case true:
doThis()
case false:
break //do nothing in short
}
然後裏面我將檢查應用程序的狀態是
func doThis() {
switch UIApplication.sharedApplication().applicationState {
case .Active:
// do some stuff here
case .Inactive, .Background:
// do some stuff here
}
}
這完美的作品時,應用程序正在運行或處於待機狀態,但不會在應用程序工作被終止/關閉。
有沒有辦法在不改變API /服務器代碼的情況下工作?
這是不可能的,如果應用程序已被迫退出。 http://stackoverflow.com/a/26587688/4539192 – Rikh
我的意思是,我想選擇顯示哪些推送通知,而不是哪個推送通知來處理動作。請原諒我的英語 因此,根據我的理解,真的沒有辦法做到這一點,我真的應該只是玩API /服務器代碼? –
這是正確的。如果您的應用程序未運行,則通知由iOS處理,您的應用程序不會被調用 – Paulw11