如何在推送通知中包含其他信息 [关闭]
Posted
技术标签:
【中文标题】如何在推送通知中包含其他信息 [关闭]【英文标题】:How to include additional information in a push notification [closed] 【发布时间】:2013-12-30 09:25:32 【问题描述】:我目前正在处理远程推送通知,我需要知道是否有办法在通知中提供附加信息,这些信息将可供应用使用但不会显示给用户(在警报消息中)。
我在发帖前尝试在 Google 上搜索,但没有找到任何解决我的问题的方法。
【问题讨论】:
你的意思是你不想在通知区域显示文字? @Retro ,我需要在屏幕上显示之前更改本机通知弹出文本..可以吗? 您的意思是您希望推送中的信息可供应用使用但不向用户显示? 是的..这正是我需要的..我仍然无法测试复古答案,因为 APNS 推送器无法处理格式..所以仍在等待我的服务器端实现它@Wain 重复***.com/questions/11236630/… 【参考方案1】:我在 mu 应用程序中使用但需要在有效负载端执行的技巧
默认有效负载看起来像
"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"
这个key自带payload方便使用,希望对你有帮助
【讨论】:
我会试一试,然后回复你结果))【参考方案2】:当您收到远程通知时,会在委托中调用此方法。好的?现在您可以通过阅读 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
...
【讨论】:
这不是我需要的,我需要在收到推送之前更改本机通知弹出窗口的文本,然后再将其显示给用户(出现在主屏幕中的那个)..也许是不可能,因为应用程序将被关闭,但我希望有办法做到这一点..【参考方案3】:这里有两种情况。
如果应用程序正在运行(前台):那么 -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 获取 在应用委托类中触发。您可以执行任何您想执行的操作 想在这个方法内。 (显示警告对话框等)
如果应用程序没有运行(后台):那么在这种情况下你 不能做太多,文本将按原样显示。(在服务器部分的通知脚本中定义)
【讨论】:
嗯,谢谢:) 看来我需要找到其他方法来接收来自推送的数据。因为除非应用程序关闭或在后台,否则不会出现本机通知弹出窗口。无论如何感谢您的帮助:) 这就是我们在这里互相帮助的原因。谢谢 :) 希望你能找到你要找的东西。 您可以在后端定义不同的情况,例如(考虑所有场景)“添加图像”、“喜欢”、“评论”等,并相应地在负载中填充文本。【参考方案4】:在您的 Appdelegate 类中使用此代码
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo UIApplicationState state = [应用程序应用状态];
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];
【讨论】:
以上是关于如何在推送通知中包含其他信息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章