Могу ли я преобразовать строку в SINCall? - PullRequest
0 голосов
/ 27 июня 2018

Я работаю с sinch и использую firebase в качестве базы данных и использую его облачные функции для отправки уведомлений. Отправка уведомлений работает нормально, но функция shouldSendPushNotifications, но она никогда не вызывается, поэтому я не могу добавить полезную нагрузку sinch к данным уведомлений, и я не смог найти в Интернете ничего хорошего примера, поэтому я отказался от этого и решил отправить объект SINcall в базу данных, и вызываемый абонент получит его и ответит.

Но проблема в том, что firebase хранит только строки, поэтому, когда я извлекаю сохраненный SINCall, я получаю ошибку Could not cast value of type '__NSCFString' (0x102096998) to '__ObjC.SINCall' (0x10209ab08). Так есть ли способ преобразовать это в SINCall, чтобы я мог ответить, отклонить и т. Д. С ним?

EDIT: здесь у меня есть мой код в 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 Ответ

0 голосов
/ 28 июня 2018

Вам нужно отправить данные в 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                
    }
...