Не удалось получить UUID входящего звонка

Я использую callkit & pushkit для реализации VoIP-звонков.

Чтобы позвонить, это код

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

Я также получаю VoIP Push, но в этом, я не получаю 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, пожалуйста, укажите, что я делаю не так.

1 ответ

Решение

UUID может быть сгенерирован и сохранен из самого iOS-приложения. Но 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.

Другие вопросы по тегам