我目前正在处理远程推送通知,我需要知道是否有一种方法可以在通知中提供可供应用程序使用但不会向用户显示的其他信息(在警报消息中)。
我尝试在发布之前搜索Google,但我没有找到解决问题的方法。
答案 0 :(得分:4)
我在mu app中使用的技巧但需要在有效负载结束时使用
默认有效负载看起来像
{
"aps": {
"badge": 10,
"alert": "Hello world!",
"sound": "cat.caf"
}
}
和通知日志显示警报消息文本,以便您可以更改警告消息,如
{
"aps": {
"badge": 10,
"alert": "You got the new message",
"sound": "cat.caf"
}
"message" : "The message you want to use later to show in application"
}
并且此密钥随附有效负载,方便工作,希望对您有所帮助
答案 1 :(得分:0)
当您收到远程通知时,将在委托中调用此方法。好?现在,您可以通过读取userInfo字典来处理每个状态的基础。是否在警报中显示相同的文本或不同的文本。您可以根据自己的需要进行自定义。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if ( application.applicationState == UIApplicationStateActive )
// app was already in the foreground
else
// app was just brought from background to foreground
...
}
答案 2 :(得分:0)
这里有两个场景。
如果应用程序正在运行(前景):那么 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 获取 在app delegate类中触发。你可以执行任何动作 想要这种方法。 (显示警告对话框等)
如果应用程序没有运行(背景):那么你就是这样 不能做太多,文本将按原样显示。(在服务器部分的通知脚本中定义)
答案 3 :(得分:0)
在Appdelegate类中使用此代码
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive)
{
NSLog(@"User Info : %@", [userInfo description]);
NSLog(@"User Info Alert Message : %@", [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
NSString *messageString = [NSString stringWithFormat:@"%@", [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Red-Vs-Blue" message:messageString delegate:self cancelButtonTitle:@"Done" otherButtonTitles: @"Cancel", nil] ;
//here you can change alert title and message according your choice
[alert show];
}