Push-уведомления без предупреждения - PullRequest
4 голосов
/ 27 февраля 2011

Могу ли я получать push-уведомления без просмотра предупреждений?Идея в том, что сервис для игры будет отправлять уведомления в ответ на изменение состояния игры (возможно, состояние игры будет сохраняться в базе данных), если это невозможно, что вы можете посоветовать о том, как отправить новое состояние игры каждому подключенному игровому клиенту в ответизменения состояния игры.

Игра будет развиваться для iPad.

Спасибо, Роман

Ответы [ 6 ]

18 голосов
/ 27 февраля 2011

Для меня @Ajay ответ неправильный (извините).

С помощью push-уведомлений вы можете выбрать один из трех вариантов пользователя: текстовое сообщение (оповещения), звуки и значки. Каждое push-уведомление может содержать один или несколько из этих параметров, поэтому вы можете отправить, например, уведомление со звуком и значком, но без сообщения, и в этом случае отображается любое предупреждение.

Обратите внимание, что вы даже можете передать в приложение скрытые опции в личном словаре.

8 голосов
/ 21 ноября 2014

Использовать свойство content-available:

Словарь aps также может содержать свойство content-available.Свойство content-available со значением 1 позволяет удаленному уведомлению действовать как «тихое» уведомление.Когда приходит тихое уведомление, iOS запускает ваше приложение в фоновом режиме, чтобы вы могли получать новые данные с вашего сервера или выполнять обработку фоновой информации.Пользователям не сообщают о новой или измененной информации, полученной из автоматического уведомления, но они могут узнать об этом при следующем открытии вашего приложения.

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

5 голосов
/ 01 мая 2013

Почему бы и нет!

Вы можете отправить скрытое push-уведомление без какого-либо оповещения, баннера или звука.

КОД PHP

без текста:

$payload['aps'] = array('badge'=> 0, 'sound' => 'default');

Без текста и звука

$payload['aps'] = array('badge'=> 0);

и со своей стороны ios вы можете сделать условие для этого:

//Receiving a Push Notification
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSMutableDictionary *pushNotiFicationDict = [userInfo objectForKey:@"aps"];
    NSLog(@":%@", pushNotiFicationDict);

    if([pushNotiFicationDict objectForKey:@"alert"])
    {
        // when push notification has text
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"MESSAGE" message:[pushNotiFicationDict objectForKey:@"alert"]
                                                        delegate:nil
                                               cancelButtonTitle:@"ok"
                                               otherButtonTitles:nil];
        [alert show];
    }
    else
    {
        // when push notification does not have text
    }
}

Но я думаю, что вы не можете выполнить любоедействие, если приложение не работает или работает в фоновом режиме .

2 голосов
/ 27 февраля 2011

Нет, push-уведомление всегда будет отображать уведомление, поскольку оно требует согласия пользователя, чтобы проснуться или запустить ваше приложение.Однако если ваше приложение находится на переднем плане и работает, push-уведомление не появится, и ваше приложение сможет обработать сообщение, которое имеет push-уведомление.Все вышесказанное относится и к локальным уведомлениям.

Я не знаю, что вы подразумеваете под состоянием игры.Но просто сделайте так, чтобы ваше приложение слушало скрипт на вашем сервере, который будет передавать информацию вашему приложению.Изменить: Или, как я уже говорил выше, если ваше приложение открыто на переднем плане, push-уведомления не будут отображаться на экране, и вы можете отправлять информацию таким образом.Однако, если вы хотите сделать это в фоновом режиме, это невозможно, несмотря ни на что, если вы действительно многозадачны (GPS, VOIP, Музыка) или у вас нет согласия пользователя с помощью push-уведомления.

0 голосов
/ 27 сентября 2013

Я согласен с @MacTeo. Вы можете доставить push-уведомление с полезной нагрузкой, которая содержит только один атрибут (Звук, Предупреждение (или сообщение) и значок).

По вашему требованию отслеживайте пользовательское устройство на сервере, когда они открывают и закрывают приложение (передний план и фон). Если что-то произойдет, вы можете проверить состояние устройства на сервере. Затем вы могли бы решить, как создать уведомление (если оно необходимо) на основе последнего сообщенного состояния устройства.

Просто плевок:

Вы могли бы, если хотите, (однако это не то, для чего предназначены APN), доставить push-уведомление только с количеством значков = 0 и передать некоторые дополнительные словарные данные вместе с ним. Это не будет предупреждать пользователя и может быть обработано в приложении, если оно находится на переднем плане.

0 голосов
/ 27 февраля 2011

Вы можете обрабатывать уведомления в приложении и хранить данные в БД, или вместо этого показывать сообщение, но когда приложение не запущено, НЕТ.

...