Когда я запускаю свое приложение из Xcode, все работает нормально.Я получаю, что вызывается обратный вызов handleNotificationReceived, и я могу читать данные из уведомления и обрабатывать их в зависимости от данных.Если я нажимаю на уведомление, вызывается обратный вызов handleNotificationAction, и то же самое здесь.Если я затем сверну приложение, оно будет работать точно так же - будут вызваны обратные вызовы, и я смогу обработать уведомление.
Проблемы начинаются, когда я завершаю приложение с iPhone через недавнее меню приложения и запускаю его с помощью значка нарабочий стол.Если приложение находится на переднем плане, все работает нормально, как при запуске приложения из Xcode.Когда я минимизирую его, я все равно получаю уведомление, но обратный вызов handleNotificationReceived больше не вызывается.Если я нажимаю на уведомление, приложение выходит на передний план, а затем вызывается handleNotificationAction и вскоре после этого также вызывается handleNotificationReceived.Пока приложение находится на переднем плане, оно продолжает работать нормально и вызывается обратный вызов.Как только я снова сворачиваю приложение, handleNotificationReceived больше не вызывается.
Если я присоединяю отладчик, все снова начинает работать нормально.
Почему он не вызывается?Я получаю некоторые данные в уведомлениях, которые я должен сохранить в Core Data.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
AppDelegate.configOneSignal(launchOptions)
return true
}
class func configOneSignal(_ launchOptions: [UIApplicationLaunchOptionsKey: Any]? = nil) -> Void {
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false]
OneSignal.initWithLaunchOptions(launchOptions,
appId: "MY_APP_ID",
handleNotificationReceived: { notification in
print("notification received")
AppDelegate.handleNotification(notification)
},
handleNotificationAction: { (result) in
print("notification action")
AppDelegate.handleNotification(result?.notification)
},
settings: onesignalInitSettings)
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification;
OneSignal.promptForPushNotifications(userResponse: { accepted in
print("User accepted notifications: \(accepted)")
})
}
Версия Xcode: 10.1 Протестированные версии iOS: 10, 11, 12