推送通知没有警报

时间:2011-02-27 06:45:54

标签: iphone ipad push-notification uialertview

我可以在没有提醒视图的情况下获得推送通知吗 什么样的游戏服务的想法将发送通知作为改变游戏状态的响应(可能是游戏状态将存储在数据库中),如果这是不可能的,你可以建议我如何将新游戏状态作为响应发送给每个连接的游戏客户端改变游戏状态。

游戏将为iPad开发。

谢谢, 罗马

6 个答案:

答案 0 :(得分:18)

对我来说@Ajay回答不正确(抱歉)。

使用推送通知,您可以选择三个用户选项:短信(提醒),声音和徽章。每个推送通知都可以包含一个或多个这些选项,因此您可以发送带声音和徽章的通知,但不会发送消息,在这种情况下会显示任何警报。

请注意,您甚至可以将私人字典中的隐藏选项传递给您的应用程序。

答案 1 :(得分:8)

使用内容可用属性:

  

aps词典还可以包含content-available属性。值为1的content-available属性允许远程通知充当“静默”通知。当无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。用户不会被告知由静默通知产生的新信息或更改信息,但他们可以在下次打开您的应用时找到相关信息。

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

答案 2 :(得分:5)

为什么不呢!

您可以发送隐藏的推送通知,而不会发出任何警告,横幅或声音。

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
    }
}
  

但我认为如果应用程序未运行在后台运行,则无法执行任何操作。

答案 3 :(得分:2)

不,推送通知将始终显示通知,因为它需要用户同意才能唤醒或启动您的应用程序。但是,如果您的应用程序位于前台并且正在运行,则不会显示推送通知,并且您的应用程序可以处理推送通知所具有的消息。所有上述内容都适用于本地通知。

我不知道游戏状态是什么意思。但只需让您的应用程序收听服务器上的脚本,该脚本会将信息传递给您的应用。编辑:或者就像我上面说的,如果您的应用程序在前台打开,推送通知将不会出现在屏幕上,您可以通过这种方式发送信息。但是,如果您想在后台进行此操作,除非您真正进行多任务处理(GPS,VOIP,音乐)或通过推送通知获得用户同意,否则无法进行操作。

答案 4 :(得分:0)

您可以在应用中处理通知并在数据库中存储数据,或者在应用未运行时显示消息。

答案 5 :(得分:0)

我同意@MacTeo。您可以使用仅包含一个属性(声音,警报(或消息)和徽章)的有效负载传递推送通知。

根据您的要求,在打开和关闭应用程序(前景和背景)时跟踪服务器上的用户设备。如果发生了某些事情,那么您可以检查服务器上的设备状态。然后,您可以根据设备的上次报告状态决定如何构建通知(如果有必要)。

只是spitballing:

如果您愿意(但是,它不是APN设计的目的),您可以提供仅具有徽章计数= 0的推送通知,并使用它传递一些额外的字典数据。这不会提醒用户,如果它在前台,可以在应用程序中处理。