0

プッシュ通知を送信すると、デバイスの場所を私に送信するアプリがあります。しかし、アプリがフォアグラウンドで実行されている間、プッシュ通知を受け取るとアプリがクラッシュします。プッシュ通知を受信するとiPhoneアプリがクラッシュする

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) 
    }) 
} 
+0

エラーは何ですか? –

+0

私はAPNSで働いています。私は.ipaを作成していて、自分のデバイスにインストールしています。ログは生成されません。 –

+0

開発証明書を作成してデバイスでテストするのはなぜですか? –

答えて

1

あり、本当に十分な情報が間違って起こっているかを把握するためにここにいないのですが、私は私の精神的なデバッグの帽子の上に置けば、ここでのif文が原因簡単にクラッシュにキャストすることを強制することができBool場合:

  1. managedConfigであるNSDictionary
  2. それは(おそらくNSStringBool
以外の何かを記憶 locationTrackingDisabledキーを有しています

より良い方法は、if letステートメントを使用して、辞書の値が予想される型かどうかを安全に判断することです。

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

Xcodeでデバイス上でアプリケーションを実行しても、プッシュ通知を受け取ることができます。また、Storeを通じてアプリを配布する場合は、HockeyApp、Crashlytics、Crittercismなどのクラッシュを追跡する方法があることを強くおすすめします。そこにはたくさんのオプションがあります。

+0

上記の方法を使用してクラッシュを追跡する方法やリンクを教えてください。 –

+0

HockeyAppは私が使っているものです:[HockeyAppの設定手順](https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/hockeyapp-for-ios#2-setup) –

関連する問題