Я видел слишком много вопросов о тихом уведомлении push не работает, если устройство не подключено к xcode, но я не смог найти реальный ответ. Я использую Бесшумный APN, чтобы начать процесс в фоновом режиме, а затем огнь локальных рассылок уведомленийiOS 8 Silent Push Notification не запускает метод didReceiveRemoteNotification, когда приложение не подключено к xcode
Сервер посылает это информация:
"_metadata" = { bagde = 1; pushText = "semeone has sent you a message!!"; sender = "semeone"; }; aps = { "content-available" = 1; };
И _metadata настраивается информацией для стрельбы из местного уведомления, Я не включил значок, pushText .. в aps, потому что я это молчаливое push-уведомление.
Клиент должен получить информацию в didReceiveRemoteNotification,
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { if(application.applicationState != UIApplicationStateActive){ if([userInfo[@"aps"][@"content-available"] intValue]== 1) //it's the silent notification { //start a background task UIBackgroundTaskIdentifier preLoadPNTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ NSLog(@"Background task to start a process "); }]; //end completionHandler regarding to fetchCompletionHandler completionHandler(UIBackgroundFetchResultNewData); // doing my process...... and fire a local notification if(preLoadPNTask){ NSLog(@"End Background task "); [[UIApplication sharedApplication] endBackgroundTask:preLoadPNTask]; preLoadPNTask = 0; } return; } else { NSLog(@"didReceiveRemoteNotification it's NOT the silent notification "); completionHandler(UIBackgroundFetchResultNoData); return; } } else { if(preLoadPNTask){ NSLog(@"End Background task "); [[UIApplication sharedApplication] endBackgroundTask:preLoadPNTask]; preLoadPNTask = 0; } completionHandler(UIBackgroundFetchResultNewData); } }
Он отлично работает, когда устройство подключается к Xcode, но когда это не так, didReceiveRemoteNotification не запускается :(
Любые идеи?
Спасибо заранее !!
Какую задачу вы выполнять при получении уведомления? –
Я добавляю в NSMutableDictionary идентификатор и отправителя, затем я отправил данные в Worklight [[WL sharedInstance] sendActionToJS: @ «silentNotification» withData: dictionary]; а затем я освобожу локальное уведомление localNotif.soundName = UILocalNotificationDefaultSoundName; localNotif.applicationIconBadgeNumber = значок; местныйNotif.alertBody = textAlert; localNotif.userInfo = userInfoData; [[UIApplication sharedApplication] scheduleLocalNotification: localNotif]; [localNotif release]; – Jan
Откуда вы знаете, вызван ли метод didReceiveRemoteNotification? –