Я реализовал VOIP push, который отправляет форму push-уведомления amazon SNS. Когда мы находимся в режиме разработки, push работает нормально во всех трех режимах (активный, фоновый, завершенный) и обновляет базу данных firebase db (timestamp, lat, long), но когда мы помещаем его в testflight и проверяем в производстве, то push идет, но неОбновление Firebase DB. Мы проверили это отладчиком (точка останова) в режиме разработки. Просто чтобы убедиться, что push идет, мы помещаем локальное уведомление в код, упомянутый ниже
Также push-уведомление приходит, когда приложение закрывается, но не обновляет БД в рабочем состоянии.
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void){
var arrTemp = [AnyHashable: Any]()
arrTemp = payload.dictionaryPayload
let _ : Dictionary <String, AnyObject> = arrTemp["aps"] as! Dictionary<String, AnyObject>
// call back function from getting lat and long from location Manager
Locator.currentPosition(accuracy: .city, onSuccess: { (loc) -> (Void) in
isUpdatedUsingSilentPush = true
if UIApplication.shared.applicationState == UIApplicationState.background ||
UIApplication.shared.applicationState == UIApplicationState.inactive {
if self.isUserLoggedIn{
DispatchQueue.main.async(execute: {
// inside this function we are sending local notification(for testing purpose) as well updating firebase DB
self.sendLocationToFirebase(manager: Locator, Location: loc)
})
}
}else{
self.sendLocationToFirebase(manager: Locator, Location: loc)
}
}) { (err, loct) -> (Void) in
print(err)
print(loct as Any)
}
completion()
}