gpt4 book ai didi

ios - iPhone 应用程序在收到推送通知时崩溃

转载 作者:行者123 更新时间:2023-11-28 12:32:49 25 4
gpt4 key购买 nike

我有一个应用程序可以在我发送推送通知时向我发送设备的位置。但是,当应用程序在前台运行时,应用程序会在收到推送通知时崩溃。

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 而崩溃,如果:

  1. managedConfig 是一个 NSDictionary
  2. 它有一个 locationTrackingDisabled 键,它存储了 Bool 以外的东西(可能是一个 NSString)

更好的检查方法是使用 if let 语句来安全地确定字典中的值是否具有预期的类型。

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

请注意,您可以通过 Xcode 在设备上运行您的应用程序,并且仍会收到推送通知。此外,如果您打算通过商店分发应用程序,强烈建议您采用某种方式来跟踪崩溃,即通过 HockeyApp、Crashlytics、Crittercism 等。那里有很多选择。

关于ios - iPhone 应用程序在收到推送通知时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41658445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com