Не удалось получить 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.