Geofencing UILocalNotification无法正常工作

时间:2015-11-26 12:09:24

标签: ios swift notifications uilocalnotification

我在swift中面临一个奇怪的本地通知问题。 我正在提出像这样的本地通知

        let notification = UILocalNotification()
        var body = "Hi Krishna";
        if(region.identifier == "entry1") {
            body += " Welcome";
        } else {
            body += " Bye! Bye!";
        }
        notification.alertBody = body
        notification.soundName = "Default";

        notification.userInfo = ["id": "id"];

        notification.fireDate = NSDate(timeIntervalSinceNow: 1)
        UIApplication.sharedApplication().scheduleLocalNotification(notification)

以及我如何处理appdelegate中的启动选项

    if(launchOptions != nil) {
        window?.rootViewController?.view.backgroundColor = UIColor.cyanColor();
        if let notification = launchOptions![UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {
            window?.rootViewController?.view.backgroundColor = UIColor.blackColor();
            if let userInfo = notification.userInfo {
                window?.rootViewController?.view.backgroundColor = UIColor.blueColor();
                if let id = userInfo["id"] as? String {
                    window?.rootViewController?.view.backgroundColor = UIColor.redColor();
                }
            }
        }
    }

用于调试目的我正在改变视图的背景颜色。 当我点击通知时,我得到青色,这意味着线下失败

launchOptions![UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification

因为我在此行的正上方设置了青色。 所以我不知道为什么这不能转换为UILocalNotification? 有人可以帮助我摆脱这个问题吗?+

实际上还有一件事,如果我正常工作,但我正在使用地理围栏并且我正在安排来自

的通知
locationManager(manager: CLLocationManager, didExitRegion region: CLRegion)

在这种情况下,它不起作用。

2 个答案:

答案 0 :(得分:0)

您可以在AppDelegate中实施application(_:didReceiveLocalNotification:)(直接向您提供通知)并在那里处理通知。

更多:https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveLocalNotification

答案 1 :(得分:0)

你可以尝试这样投射:

if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {
        //do stuff with notification
}