我的问题可能很糟糕,但我在任何地方都找不到任何答案,我迷路了......
My question might be bad, but I can't find any answer anywhere, I'm lost...
所以我想在 iOS 10+ 中显示一个带有漂亮图像的丰富通知.
So I want to display a rich notification with a nice image in iOS 10+.
为此,我使用 FCM 和 UNNotificationServiceExtension,如果我理解正确,它应该获取数据负载,找到图像 URL 并在修改 UNNotificationContent 之前加载它.
For this I'm using FCM and an UNNotificationServiceExtension which, if I understood correctly, should get the Data payload, find the image URL and load it before modifying the UNNotificationContent.
我的问题是我无法掌握这些数据".
The issue I have is that I can't get a hold of this "data".
我发送给 FCM 的内容如下:
What I'm sending to FCM is the following :
{
"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"结尾而不是外部,这就是为什么我在扩展程序中找不到它们的原因.
As I understand it, the mediaURL and message should end up in "aps" and not outside, which is why I can't find them in the extension.
在我得到的扩展中:(为了提高可读性,我将其拆分为昏迷)
And inside the extension I get : (I split it on coma for more readability)
<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 发送信息,还是我检索它们的方式?也许这就是我对待他们的方式?
Is the problem how I send information with FCM, or the way I retrieve them? Maybe it's the way I treat them ?
一如既往,感谢您的帮助!
As always, thanks for the help!
为接收器添加代码(只是扩展中的打印)
Edit : Added code for the receiver (which is just a print in the extension)
@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
以获取 mediaUrl
数据.
I think you should check self.bestAttemptContent?.userInfo
for mediaUrl
data.
这篇关于在带有 FCM 的 iOS 上使用富推送通知中的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!