如何在推送通知中包含其他信息 [关闭]

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];

【讨论】:

以上是关于如何在推送通知中包含其他信息 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS 根据用户的位置显示推送通知

如何在小米5手机上禁止app的消息推送?

如何在 Apple Watch 中显示推送通知?

当其他设备前景时,我应该停止发送推送通知吗?

如何像 Skype 一样回复推送通知? [关闭]

如何通过采取有效载荷中包含的操作来处理 APNS 推送消息