2016-11-10 12 views
1

私はプロジェクトでsinch SDKを使用しています。 voipタイプのプッシュ通知は、最初の起動時には受信されませんが、多くのキル/オープンアプリケーションの後に受信されます。 これは、私はあなたが、アクティブなaactive接続を開始いけないすぐにプッシュしたい場合、私はこの最初の起動時にプッシュ通知が受信されない

答えて

2

を使用する必要があります私はあなたのようにコードを変更し

self.push = Sinch.managedPushWithAPSEnvironment(.Production) 
    self.push!.delegate = self 
    self.push!.setDesiredPushType(SINPushTypeVoIP) 
    self.push!.registerUserNotificationSettings() 
0

を解決することができますどのようにトークン

func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) { 
    // Register VoIP push token (a property of PKPushCredentials) with server 

    if let sinchCLient = SinchManager.sharedInstance.sinchClient{ 
     if let _ = SessionManager.sharedInstance.user { 
      sinchCLient.registerPushNotificationData(credentials.token) 

     } 

    } 

} 

を設定するとこれは、クライアント

func initSinchClient(userIdentifier : String!) -> SINClient! { 


    if let _ = self.sinchClient{ 
     self.sinchClient?.unregisterPushNotificationDeviceToken() 
     self.sinchClient?.stopListeningOnActiveConnection() 
     self.sinchClient?.terminate() 
    } 

    self.sinchClient = Sinch.client(withApplicationKey: SinchConstants.SinchAppKey, applicationSecret: SinchConstants.SinchApplicationSecret, environmentHost: SinchConstants.SinchEnvironmentHost, userId: userIdentifier) 
    self.sinchClient!.delegate = self 
    self.sinchClient!.call().delegate = self 

    self.sinchClient!.setSupportActiveConnectionInBackground(true) 
    self.sinchClient!.setSupportPushNotifications(true) 
    self.sinchClient!.setSupportCalling(true) 
    self.sinchClient?.enableManagedPushNotifications() 
    self.sinchClient!.start() 
    self.sinchClient!.startListeningOnActiveConnection() 

    if let pushTokenData = UserDefaults.standard.object(forKey: "PushNotificationToken"){ 
     self.sinchClient!.registerPushNotificationData((pushTokenData as! NSData) as Data!) 
    } 
    return sinchClient 
} 

の初期化です接続はソケットを設定し、アプリケーションが生存している間はすぐに着信呼を取得します。

私はあなたがinitでこれをやっている理由を尋ねるかもしれません。あなたはそれをする必要はありません。ログインログアウト機能がある場合は、initではなくログアウトする必要があります。あなたがterminateSuccesfully

if let _ = self.sinchClient{ 
    self.sinchClient?.unregisterPushNotificationDeviceToken() 
    self.sinchClient?.stopListeningOnActiveConnection() 
    self.sinchClient?.terminate() 
} 
+0

プッシュオブジェクトのインスタンス化と設定を初期化する前にVOIPプッシュ

let mainQueue = dispatch_get_main_queue() // Create a push registry object let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue) // Set the registry's delegate to self voipRegistry.delegate = self // Set the push type to VoIP voipRegistry.desiredPushTypes = [PKPushTypeVoIP] 

の登録を動かすことで問題を解決しましたお勧めします。問題は解決されません。プッシュ通知は、アプリケーションを終了してから再開するまで受信されません。 –

関連する問題