簡體   English   中英

收到推送通知時,iPhone App崩潰

[英]iPhone App crashes when receiving push notification

我有一個應用程序,可以在我發送推送通知時向我發送設備的位置。 但是,當應用程序在前台運行時,該應用程序在收到推送通知時崩潰。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler:(UIBackgroundFetchResult) -> Void ) 
{
    NSLog("\(userInfo)")
    if (managedConfig["locationTrackingDisabled"] ?? false) as! Bool == false {
    locationManager.startUpdatingLocation()
    }
    let seconds = 4.0
    let delay = seconds * Double(NSEC_PER_SEC)  // nanoseconds per seconds
    let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
        completionHandler(UIBackgroundFetchResult.NewData)
    })
}

這里確實沒有足夠的信息來找出問題出在哪里,但是如果我戴上通俗易懂的調試帽,則if語句很容易崩潰,因為如果強制轉換為Bool則if:

  1. managedConfig是NSDictionary
  2. 它有一個locationTrackingDisabled鍵,該鍵存儲了Bool以外的其他內容(也許是NSString

更好的檢查方法是使用if let語句安全地確定字典中的值是否具有預期的類型。

if let trackLocation = managedConfig["locationTrackingDisabled"] as? Bool, trackLocation {
    locationmanager.startUpdatingLocation()
}

請注意,您可以通過Xcode在設備上運行您的應用,但仍會收到推送通知。 另外,如果您打算通過商店分發應用程序,則強烈建議您采用某種方式來跟蹤崩潰,即通過HockeyApp,Crashlytics,Crittercism等進行跟蹤。那里有很多選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM