在 iOS 上通过 FCM 使用丰富推送通知中的数据

2023-12-02

我的问题可能很糟糕,但我在任何地方都找不到任何答案,我迷路了......


所以我想在 iOS 10+ 中显示带有漂亮图像的丰富通知。

为此,我使用 FCM 和 UNNotificationServiceExtension,如果我理解正确的话,它应该获取数据有效负载,找到图像 URL 并在修改 UNNotificationContent 之前加载它。

我遇到的问题是我无法掌握这些“数据”。

我发送给 FCM 的内容如下:

{
"to": "device_token",
"content_available": true,
"mutable_content": true,
"badge" : 9,
"notification": {
    "title": "You still need the iPhone ?",
    "body": "Give it back if you finished you tests !"
},
"data": {
    "message": "test !",
    "mediaUrl": "http://usr.audioasylum.com/images/2/20352/Cat_and_rose.jpg"
},
"priority": "high"
}

我在电话中得到的是:

{
aps =     {
    alert =         {
        body = "Give it back if you finished you tests !";
        title = "You still need the iPhone ?";
    };
    "content-available" = 1;
    "mutable-content" = 1;
};
"gcm.message_id" = "0:1489054783357873%1ee659bb1ee659bb";
mediaUrl = "http://usr.audioasylum.com/images/2/20352/Cat_and_rose.jpg";
message = "Offer!";
}

据我了解,mediaURL 和消息应该以“aps”结束,而不是在外部,这就是为什么我在扩展中找不到它们。

在扩展名中我得到:(为了提高可读性,我将其拆分为逗号)

<UNNotificationRequest: 0x117d3c170;
identifier: FDC13B60-FE5A-40C6-896D-06D422043CCE
content: <UNNotificationContent: 0x117d3a650; title: You still need the iPhone ?
subtitle: (null)
body: Give it back if you finished you tests !
categoryIdentifier: 
launchImageName: 
peopleIdentifiers: ()
threadIdentifier: 
attachments: ()
badge: (null)
sound: (null)
hasDefaultAction: YES
shouldAddToNotificationsList: YES
shouldAlwaysAlertWhileAppIsForeground: NO
shouldLockDevice: NO
shouldPauseMedia: NO
isSnoozeable: NO
fromSnooze: NO
darwinNotificationName: (null)
darwinSnoozedNotificationName: (null)
trigger: <UNPushNotificationTrigger: 0x117d3fe90; contentAvailable: YES
 mutableContent: YES>>

问题是我如何使用 FCM 发送信息,还是我检索信息的方式?也许这就是我对待他们的方式?

一如既往,感谢您的帮助!

编辑:添加了接收器的代码(这只是扩展中的打印)

@interface NotificationService ()

@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;

@end

@implementation NotificationService

- (void) didReceiveNotificationRequest: (UNNotificationRequest *) request
                    withContentHandler: (void (^)(UNNotificationContent *_Nonnull))contentHandler
{
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    NSLog(@"------------------- %@ -------------------", request);

    // Modify the notification content here...
    self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
    self.bestAttemptContent.body = [NSString stringWithFormat:@"%@", request.content];
    self.contentHandler(self.bestAttemptContent);
}

我认为你应该检查一下self.bestAttemptContent?.userInfo for mediaUrl data.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 上通过 FCM 使用丰富推送通知中的数据 的相关文章

随机推荐

  • PDO - 将字段名称作为变量传递

    我只是将代码从 mysql query 样式命令迁移到 PDO 样式 但遇到了问题 旧代码如下所示 query list menu SELECT GET section name from myl menu hide show WHERE
  • Vagrant ssh 'private_key_path` 文件必须存在

    我在 vagrant up 期间收到此错误 There are errors in the configuration of this machine Please fix the following errors and try agai
  • Java:使用itext读取PDF书签名称

    我正在处理包含多个文档的单个 PDF 每个文档都有一个书签 我需要读取我正在构建的调节应用程序的书签名称 下面的代码对我不起作用 我试图将书签名称放入title细绳 有人可以提供任何指导吗 非常感谢 PdfReader reader new
  • 防止 QScintilla 中触发键盘快捷键(示例代码)

    我想防止在 QScintilla 小部件中编辑代码时触发应用程序键盘快捷键 就像普通的 QLineEdit 字段不会触发一样 在下面的可执行示例代码中 无法在 QScintilla 小部件中键入空格 因为空格键已设置为快捷方式 但在 QLi
  • 使用 C# 将字符串表达式转换为整数值[重复]

    这个问题在这里已经有答案了 抱歉 如果这个问题已经得到解答 但我没有找到合适的答案 我在 C 中有一个字符串表达式 需要将其转换为 int 或十进制值 例如 string strExp 10 20 30 输出应该是 60 我该怎么办 Fwi
  • 斯威夫特||返回一个可由 API 调用中的其他方法使用的类

    我正在从移动应用程序调用 HERE Weather API 并且需要将当前天气作为对象返回 以便其他方法可以在给定时间段 例如 30 分钟更新间隔 内使用该信息 我根据这个网站对异步调用有了一个粗略的了解https fluffy es re
  • RestEASY 和 Jackson 不兼容 - NoSuchMethodException

    我将我的项目从JBoss AS 7 2 to 野蝇8 0经过一段时间的版本更新后 我不知道如何解决RestEASY and Jackson不兼容 In JBoss AS 7 2 I used RestEASY 3 0 6 Final and
  • 添加文本后缀

    我目前有很多这样的输入
  • 复选框的默认控件模板

    我找不到默认的 WPFControlTemplate for a CheckBox 有谁知道如何找到它吗 我所能找到的就是MSDN 上的 SilverLight 默认复选框模板 MSDN 有一个用于 WPF 复选框的自定义控件模板使用 X
  • iPhone动画帧速率和帧数

    我正在开发一个应用程序 客户想要为大图像 305x332 制作动画 客户希望在 1 75 秒内循环播放 50 帧动画 我发现该应用程序在进行如此多的处理时速度非常慢 启动 触摸响应和关闭都很慢 在 iPhone 本身上 该应用程序经常会崩溃
  • Angular CDK 拖放绝对定位元素而不跳转

    我正在尝试使用 CDK 中的 Angular Drag Drop 来实现带有可拖动元素的基本侧边栏 用户可以将它们拖放到 内容 区域中的任何位置 这意味着 元素最终应该是绝对定位的 并且应该能够存在于用户想要的任何地方 包括相互重叠 我正在
  • 如何在 VBScript 中循环?

    我想知道如何 或者甚至知道是否可以在 VBScript 中的循环内循环 从逻辑上讲 世界是这样运作的 Do until y 5 msgbox msgbox 1 loop test Do Until z 5 msgbox msgbox 2 l
  • R 中的过滤和显示过滤数据摘要的奇怪之处

    我有一个使用 R 中的 CSV 库加载的数据框 例如 mySheet lt read csv Table csv sep 我现在可以打印该 mySheet 对象的摘要 summary mySheet 它将向我显示每一列的摘要 例如 名为 D
  • go中如何导入本地包?

    我是新来的 正在处理我想要本地化的示例代码 在原来的main go导入声明是 import log net http github com foo bar myapp common github com foo bar myapp rout
  • 节点服务器在解析 JSON 时崩溃

    看起来我的节点服务器死掉了parseJSON 查看日志 最后一条消息是 解析之前 并且从未打印 解析之后 奇怪的是 我用 try catch 包装了 JSON pars 所以我不确定它是如何导致服务器崩溃的 有什么想法吗 logger pr
  • glmmLasso 错误和警告

    我正在尝试使用 glmmLasso 在广义线性混合模型中执行变量选择 但出现了一个我无法解决的错误和警告 数据集不平衡 一些参与者 PTNO 拥有比其他参与者更多的样本 无缺失数据 我的因变量是二进制的 所有其他变量 除了 ID 变量 PT
  • 如何从Google Play商店获取应用市场版本信息?

    如何从 Google Play 商店获取应用程序版本信息 以便在 Play 商店应用程序更新时提示用户强制 建议更新应用程序 即用户使用旧版本应用程序时 我已经经历过android 市场 api这不是官方方式 并且还需要授权登录来自谷歌的身
  • 类将数据成员存储在顺序内存中?

    这个问题的简短版本 指向类的第一个数据成员的指针是否会导致指向其所有数据成员的指针 讨论 我正在阅读一些示例代码 这很有趣 当一个特定的函数 在本例中是glUniformMatrix4fvOpenGL 中的 C 函数 将数组作为参数 这是使
  • Javascript 模式:条件事件处理程序

    给定例如某种类实例具有状态 例如 活动 非活动 该实例还附加了一个点击事件 例如一个链接 但事件处理程序根据实例的状态执行不同的操作 伪代码 IF instance state IS active AND link is clicked T
  • 在 iOS 上通过 FCM 使用丰富推送通知中的数据

    我的问题可能很糟糕 但我在任何地方都找不到任何答案 我迷路了 所以我想在 iOS 10 中显示带有漂亮图像的丰富通知 为此 我使用 FCM 和 UNNotificationServiceExtension 如果我理解正确的话 它应该获取数据