Отправка тегов одного сигнала при завершении работы приложения в iOS

#ios #iphone #onesignal #swift4.2

Вопрос:

В нашем приложении для электронной коммерции iOS я настроил ONESIGNAL и отправил «cart_update». Я отправляю «cart_update» в значение true в ситуации, когда у пользователя есть по крайней мере один товар в корзине, и приложение достигает состояния завершения или фонового состояния. Кроме того, я выяснил, что этот процесс занимает около 7-9 секунд, чтобы теги были успешно отправлены на серверы ONESIGNAL. Я пытался следовать перечисленным проблемам и сталкивался с ними:

  1. Выполните фоновую выборку: в этом случае последовательность отправки тегов на сервер ONESIGNAL выполняется только после того, как пользователь снова войдет в приложение.
  2. приложение завершится: в этом случае оно вообще не выполняется. поэтому, чтобы проверить, я настроил таймер, как только он достигнет как в applicationWillTerminate, так и в applicationEntersBackground, и я заметил, что таймер просто работает в течение двух секунд и исчезает, где процесс занимает по крайней мере 7 секунд для завершения.
  3. наконец, я также использовал BGTask, но это тоже не помогло в любом случае.

Ниже приведен код, который я отправляю на один сигнал:

 let AbondenTime = Int(Date().timeIntervalSince1970)
        let dict: [String: String] = [
            "cart_update": "(AbondenCart.isAbondened)",
            "product_name": AbondenCart.productName,
            "product_image": AbondenCart.productImage,
            "update_time": "(AbondenTime)"]
        
        if let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted),
           let nsString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue){
            let jsonString = nsString as String
            print("ONE SIGNAL JSON STRING: (jsonString)")
            
            OneSignal.sendTags(withJsonString: jsonString)
        }
 

ПРИМЕЧАНИЕ: Если я выполню приведенный выше код, когда приложение находится на переднем плане по крайней мере 10 секунд. Он успешно размещает теги на серверах ONESIGNAL, и я вижу, что данные мгновенно отображаются под вкладкой «АУДИТОРИЯ».