2015-09-30 69 views
2

這可能看起來像一個愚蠢的問題,但這是我第一次使用UILocalNotification,我無法得到它的工作進行快速測試。它只是沒有做任何事情。UILocalNotification沒有做任何事

1.我在AppDelegate中

let today = NSDate() 
let notification: UILocalNotification = UILocalNotification() 
在applicationDidEnterBackground功能

2.然後創建2個變量,我有以下

notification.fireDate = today.dateByAddingTimeInterval(10) 
    notification.alertTitle = "My App Test" 
    notification.alertBody = "Testing Notification \n :)" 
    UIApplication.sharedApplication().presentLocalNotificationNow(notification) 
    UIApplication.sharedApplication().scheduleLocalNotification(notification) 

3.還加入這對於applicationDidBecomeActive功能

UIApplication.sharedApplication().cancelAllLocalNotifications() 
+0

正在計劃的通知你創建'today'變量之後是10秒。您是否真的在10秒內將應用程序置於後臺?您是否添加了所有需要的代碼以啓用和響應通知?您是否接受允許通知您的應用的權限? – rmaddy

+0

是的,只要我啓動我的應用程序,我立即將它放在背景中以確保我等待10秒。我甚至看到我的日誌聲明發出了呼叫。在回答你的第二個問題時,我確實發現我的應用程序從來沒有要求允許通知的權限。但是還沒有想到它。我該如何強制要求? – Lavvo

+1

您應該閱讀[本地和遠程通知編程指南](https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/ TP40008194)瞭解詳情。 – rmaddy

回答

4

再次閱讀文檔後,我意識到我錯過了一個至關重要的第一步,那就是先註冊我的應用程序以便用戶通知。 Apple文檔是用OBJ-C編寫的,但是我能夠弄清楚它是爲了將其轉換爲swift。這是我做過什麼:

1.我已將此添加到我的AppDelegate didFinishLaunchingWithOptions功能,現在可

var types: UIUserNotificationType = UIUserNotificationType() 
types.insert(UIUserNotificationType.Alert) 
types.insert(UIUserNotificationType.Badge) 

let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil) 

UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
+0

耶穌基督,我無法得到它的工作,沒有人提到這個地方......謝謝! – Atomix

+1

我同意,我見過的所有例子都沒有提到這第一步。但很高興我能夠解決它並幫助任何需要它的人。 – Lavvo