Ответ 1
Если в словаре нет значка, предупреждения и звука, указанного в словаре (для клавиши "aps" ), сообщение по умолчанию не будет отображаться, и оно будет полностью тихим.
Посмотрите еще раз на пример 5 в документе, на который вы ссылаетесь. aps может быть пустым, и вы можете указать любые пользовательские данные, которые вы хотели бы использовать с ключом "acme2". Данные "acme2" являются примером того, где ваша "специальная" полезная нагрузка вашего сервера может находиться в полезной нагрузке JSON.
Вам не нужно сообщать серверу, что ваше приложение запущено. Сервер может отправлять специальные полезные данные через APNS независимо от того, работает ли ваше приложение или нет, и вы получите эту специальную полезную нагрузку одним из двух способов (предполагая, конечно, что push действительно достигает устройства... что не гарантируется):
- Если ваше приложение находится на переднем плане, iOS не будет перехватывать уведомление. Вы получите уведомление в приложении для делегирования приложения: метод didReceiveRemoteNotification: (при условии, что ваш делегат приложения переопределяет метод).
- Если iOS перехватил ваш push, тогда, когда вы решите запустить приложение в ответ на уведомление, вам нужно будет получить "push-словарь" в приложении для делегирования приложения: doneFinishLaunchingWithOptions: метод, как в следующем примере:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self application:application didReceiveRemoteNotification:[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]];
}