在 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 使用丰富推送通知中的数据 的相关文章

  • 如何为整个 iOS 应用程序设置自定义字体而不指定大小

    我正在尝试在整个我的应用程序中应用自定义字体iOS app 我发现我可以使用 UILabel appearance setFont UIFont fontWithName Proxima Nova size 17 0 设置所有的默认字体和大
  • 如何让 Chrome Cast 在 iOS 后台运行?

    我有一个简单的问题 当您进入 iPhone 的主屏幕并且不退出应用程序时 chrome Cast 设备会停止在屏幕上播放视频 当应用程序在后台运行时 我如何才能保持播放状态 如果您有一个视频应用程序并且它在投射设备中运行 您可能需要以下行为
  • 使用自动布局时 UIScrollview 的中心内容

    我在项目中使用自动布局 并且有一个滚动视图 其中有一个居中的按钮 我已经让滚动视图滚动 但不占据整个屏幕 我尝试按照此处的教程进行操作 https developer apple com library ios technotes tn21
  • iOS-将图像转为视频时,CVPixelBufferCreate内存无法正确释放

    我正在将图像制作成视频 但总是因为内存警告而崩溃 分配太多CVPixelBufferCreate 我不知道如何正确处理 我看过很多类似的主题 但没有一个能解决我的问题 这是我的代码 void writeImagesArray NSArray
  • 将 .p12 证书存储在钥匙串中以供稍后使用

    我正在尝试按照 Apple 文档处理此处的客户端 p12 证书 https developer apple com library ios documentation Security Conceptual CertKeyTrustProg
  • SpriteKit - 对多个 SKNode 上运行的多个 SKAction 进行排序

    我非常了解 SKAction API 但在多个节点上运行顺序代码时我无法获得良好的代码 这是示例代码 简化 import SpriteKit class GameScene SKScene weak var node1 SKNode wea
  • xcode 6 资产目录 iPhone 6

    这个问题还没有得到解答 使用资产目录时 特定于设备 非通用 选项为 1x 2x r 2x 3x 1x 是不必要的 因为它不是视网膜 2x 是 ip4 的最佳选择 分辨率为 640x960 r 2x 适合 ip5 分辨率为 640x1136
  • sizeToFit 运行异常

    我有一段代码 每次发生后端数据库更改时都会执行 本质上我在父视图中有一个标签 标签由许多状态消息之一更新 每个状态消息位于不同的行上 并以换行符 n 结尾 每条状态消息只能在一行上 并且不能过多 我遇到的问题是 当视图首次重新加载时 一切正
  • 定位精度定义 - iOS

    iOS 上返回的 准确性 或 不确定性 的统计意图是什么 即使是近似值 例如 Android 文档对其返回的精度数字进行了解释 从这个意义上讲 它大约是一个标准差 我们将准确度定义为 68 置信度的半径 换句话说 如果 您以该位置的纬度和经
  • 从 iOS 设备向 Google App Engine 进行身份验证

    我正在开发一个 iPhone 应用程序 它使用 Google 应用程序引擎来托管后端 我需要通过 Google 进行身份验证 但我似乎无法找到从我的应用程序中执行此操作的方法 看来我要做一个UIWebView让用户登录到我从 Google
  • Swift 1.2 可选外部变量?

    由于 Swift 无法访问编译变量 因此我创建了一个指向编译变量的 Objective C extern 变量 编译变量转换器 h extern NSString const NetworkApiBasicAuthUsername 编译变量
  • 设置UITextField的光标位置

    我查看了单点触控示例并尝试过 var range new NSRange selectionStart 1 NumberTextField SelectedTextRange IndexedRange GetRange range 但这会在
  • WKWebView在后台,几个奇怪的断言

    我想找出iOS中当前浏览器的userAgent 所以在 Xcode 创建的默认项目中我添加了 import ViewController h import
  • iOS5 和 Facebook API

    我想将我的应用程序与 Facebook 集成并从 github 下载 Facebook ios sdk 但是 该 sdk 适用于 Xcode 4 0 代码库 我正在使用 Xcode 4 2 for iOS 5 beta 5 应用程序 是否有
  • 增量后清除推送通知徽章

    我正在研究 iPhone 中的推送通知 当我收到推送通知时 它在我的应用程序图标上显示 1 下次显示 2 3 4 如果我打开应用程序 它是 0 下次它应该是 1 2 3 4 但它显示最后一个数字和 1 我想在打开应用程序后重置推送通知徽章
  • 应用程序仅启用纵向,但 UIImagePickerController 在 iOS6 中旋转

    请注意 下面的答案 不适用于 iOS6 所以我仍然需要答案 我的应用程序仅启用纵向模式 但是 如果我将 UIImagePickerController 作为子视图嵌入其中 并旋转设备 则顶部和底部栏将保持在同一位置 但 UIImagePic
  • iOS 开发:如何强制 UIWebView 加载 Facebook 的非移动版本?

    我正在深入研究 iOS 开发 当我尝试在 UIWebView 中加载特定的 Facebook 粉丝页面时 它会加载该网站的移动版本 该版本仅加载粉丝页面的墙 而不是我需要加载的特定选项卡 在我的应用程序的 iPad 版本中 UIWebVie
  • iOS:应用程序在安装应用程序时不会征求用户的许可。每次都获取 kCLAuthorizationStatusNotDetermined - Objective-c 和 Swift

    我正在尝试在我的 iOS 应用程序中获取用户位置 我首先在我的项目中包含了核心定位框架 然后单击按钮 我将调用核心位置 api 如下所示 当我尝试在设备中安装它时 核心位置从不询问用户许可 当我尝试获取单击按钮时的位置时 我得到 kCLAu
  • iOS 11 中的密码自动填充快速输入栏

    iOS 11 中引入了一项新功能 应用程序密码自动填充 此功能允许用户直接从键盘快速输入栏使用其应用程序中保存的密码 https techcrunch com 2017 06 08 ios 11s new password autofill
  • GCD 与自定义队列

    我想知道这两者的性能有什么区别 dispatch async dispatch get global queue DISPATCH QUEUE PRIORITY HIGH 0 perform complex operation dispat

随机推荐

  • 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 如果我理解正确的话 它应该获取数据