だから、私は位置情報を含むAPIを使用して何かをチェックし、UILocalNotification
. これは、別のクラスから AppDelegate の場所を取得する方法です。
locationManager.stopUpdatingLocation()
if gotResponse {
return
}
locationA = locations
gotResponse = !gotResponse
let geocoder = CLGeocoder()
let locationArray = locationA as NSArray
let locationObj = locationArray.lastObject as! CLLocation
let coord = locationObj.coordinate
let latitude = coord.latitude
let longitude = coord.longitude
lat = latitude
long = longitude
AppDelegate.lat = latitude
AppDelegate.long = longitude
AppDelegate には次のようなものがあります。
@UIApplicationMain
クラス AppDelegate: UIResponder、UIApplicationDelegate、CLLocationManagerDelegate {
static var lat = CLLocationDegrees()
static var long = CLLocationDegrees()
....
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
let currentURL = "\(AppDelegate.lat),\(AppDelegate.long)?"
print("currentURLInBackround: \(currentURL) \(application.scheduledLocalNotifications!.count)")
Answers.logCustomEventWithName("Sent RainAlerts", customAttributes: nil)
Alamofire.request(.GET, currentURL)
.responseJSON { response in
let jsonData: AnyObject?
do {
jsonData = try NSJSONSerialization.JSONObjectWithData(response.data!, options: [])
guard let jsonDict = jsonData as? NSDictionary else {return}
guard let dailyDict = jsonDict["daily"] as? NSDictionary else {return}
guard let dataArr = dailyDict["data"] as? NSArray else {return}
guard let tomorrowTemp = dataArr[1] as? NSDictionary else {return}
guard let precipChance = tomorrowTemp["precipProbability"] as? Double else {return}
print("There is a chance of rain of: \(Int(precipChance * 100) )")
// MARK: set push notification
if self.defaults.boolForKey("rainAlertSwitch") == true && Int(precipChance * 100) > 40 && application.scheduledLocalNotifications?.count == 0{
let notifTime: NSDate = NSDate().dateByAddingTimeInterval(1.0)
let notification: UILocalNotification = UILocalNotification()
// Configure notification
application.scheduledLocalNotifications?.append(notification)
Answers.logCustomEventWithName("Sent RainAlerts", customAttributes: nil)
}
}catch{
}
}
completionHandler (.NewData)
}
私の問題は、私の分析がアプリがクラッシュすると言っていることですperformFetchWithCompletionHandler
。実際のデバイスで Debug->Stimulate Background Fetch を実行すると、問題なく動作します。アプリがユーザーに対してクラッシュすると分析が言う理由がわかりません。
クラッシュへの分析リンクは次のとおりです: http://crashes.to/s/86193953c05