2017-12-22 13 views
0

私はcallkit & voip呼び出しを実装するためにcallkit &を使用しています。呼び出すに着信のUUIDを取得できません

、これはコード

callManager?.startCall(handle: String(format: "%@", "Jane Doe"), video: false) 

イム同様のVoIPプッシュを得るが、その中で、私は受信機のUUIDが届かない場合、コールができるようにそれを得るためにどのような方法があります受け取った。

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) { 

    guard type == .voIP else { return } 
    print("\(#function) incoming voip notfication: \(payload.dictionaryPayload)") 

    let uuidString = payload.dictionaryPayload["UUID"] as? String { 

     let uuid = UUID(uuidString: uuidString) 
     print(uuid) // this is always nil 

     let backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(expirationHandler: nil) 
     self.displayIncomingCall(uuid: uuid, handle: "Jane Doe"", hasVideo: false) { _ in 
      UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier) 
     } 

} 

} 

では、我々はそれがVoIPのプッシュで詳細を与えることができるように、サーバーに何かを送信する必要がありますか、間違っている何イム私をポイントしてください。

答えて

0

iOSアプリケーション自体からUUIDを生成して保存することができます。しかし、UUIDはすべての呼び出しで一意でなければならず、呼び出しが終了すると、その呼び出しのための同じUUIDが使用されます。時には、これは、代替のために以下のコードを使用し、ゼロとすることができるUUID、

NSUUID *callUUID = [NSUUID UUID]; 

を生成するため

CFUUIDRef newUniqueID = CFUUIDCreate(kCFAllocatorDefault); 
CFStringRef newUniqueIDString = CFUUIDCreateString(kCFAllocatorDefault, newUniqueID); 
NSString *uuid = (__bridge NSString *)newUniqueIDString; 
CFRelease(newUniqueIDString); 
CFRelease(newUniqueID); 

注:Objective-Cで書かれた上記のコード。

関連する問題