推送通知没有警报

Rom*_*rin 4 iphone push-notification uialertview ipad

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

游戏将针对iPad开发.

谢谢,罗马

Mac*_*Teo 18

对我来说@Ajay答案不正确(对不起).

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

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


abo*_*sun 8

使用内容可用属性:

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

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


Vai*_*ran 5

为什么不!

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

PHP代码

没有文字:

$payload['aps'] = array('badge'=> 0, 'sound' => 'default');
Run Code Online (Sandbox Code Playgroud)

没有文字和声音

$payload['aps'] = array('badge'=> 0);
Run Code Online (Sandbox Code Playgroud)

在你的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
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Aja*_*jay 3

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

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