Могу ли я преобразовать строку в SINCall?
Я работаю с sinch и использую Firebase в качестве базы данных и использую его облачные функции для отправки уведомлений. Отправка уведомлений работает нормально, но shouldSendPushNotifications
функция, но она никогда не вызывается, поэтому я не могу добавить полезную нагрузку sinch к данным уведомления, и я не смог найти в интернете ничего работоспособного примера, поэтому я отказался от этого и решил отправить SINcall
Возьмите объект в базу данных, и вызываемый абонент получит его и ответит.
Но проблема в том, что firebase хранит только строки, поэтому, когда я получаю SINCall, который я сохранил, я получаю ошибку Could not cast value of type '__NSCFString' (0x102096998) to '__ObjC.SINCall' (0x10209ab08)
, Так есть ли способ преобразовать это в SINCall, чтобы я мог ответить, отклонить и т.д. с ним?
РЕДАКТИРОВАТЬ: это где у меня есть мой код в AppDelegate.swift
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("USERINFO: \(userInfo["sin"]!)") <-- prints call: <SINCallImpl: 0x1c00f2600>
let incomingCall = userInfo["sin"]!
SINClientManager.shared.call = incomingCall as! SINCall <-- Error occurs
...
}
1 ответ
Вам нужно отправить данные в sinch-клиент, чтобы установить вызов, вы не можете преобразовать строку в вызов.
NSString* payload = [remotePush objectForKey:@"SIN"];
// Get previously initiated Sinch client
id<SINClient> client = [self sinchClient];
id<SINNotificationResult> result = [client relayRemotePushNotificationPayload:payload];
if (result.isCall && result.callResult.isTimedOut) {
// Present alert notifying about missed call
} else if (!result.isValid) {
// Handle error
}