我正在尝试发送images
推送通知,我已在应用程序委托中进行了通知注册,并且apns设备令牌正在正确生成。我也已经在服务分机中编写了如下代码:
import UserNotifications
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
// Get the custom data from the notification payload
if let notificationData = request.content.userInfo["data"] as? [String: String] {
// Grab the attachment
if let urlString = notificationData["attachment-url"], let fileUrl = URL(string: urlString) {
// Download the attachment
URLSession.shared.downloadTask(with: fileUrl) { (location, response, error) in
if let location = location {
// Move temporary file to remove .tmp extension
let tmpDirectory = NSTemporaryDirectory()
let tmpFile = "file://".appending(tmpDirectory).appending(fileUrl.lastPathComponent)
let tmpUrl = URL(string: tmpFile)!
try! FileManager.default.moveItem(at: location, to: tmpUrl)
// Add the attachment to the notification content
if let attachment = try? UNNotificationAttachment(identifier: "", url: tmpUrl) {
self.bestAttemptContent?.attachments = [attachment]
}
}
// Serve the notification content
self.contentHandler!(self.bestAttemptContent!)
}.resume()
}
}
}
}
。并且json中的有效负载如下
{
"aps":
{"sound":"default","alert":
{"title":"iOS","body":"Hello Dude...."},
"mutable-content": 1},
"CustomData":
{"mType":"alert","m":"Hello Dude...."},
"Attachement-url":"https://pusher.com/static_logos/320x320.png"
}
我收到 标题 和 消息, 但是 图像 未显示。请指导如何在推送通知中获取图片
这行:
if let urlString = notificationData["attachment-url"], let fileUrl = URL(string: urlString) {
在userInfo字典中寻找attachment-url
作为data
对象子项的值。它正在寻找这个:
{
"aps" : {
...
},
"data" : {
"attachment-url" : "some url"
}
}
但是您的问题中的有效载荷是这样的:
{
"aps":{
"sound":"default",
"alert": {
"title":"iOS",
"body":"Hello Dude...."
},
"mutable-content": 1
},
"CustomData": {
"mType":"alert",
"m":"Hello Dude...."
},
"Attachement-url":"https://pusher.com/static_logos/320x320.png"
}
“数据”部分不存在,attachment-url
键也不存在。
更改您的Swift代码以匹配有效载荷中的内容,您应该能够获取图像URL并下载它。
如果您收到没有通知你将有一个很大的问题 不是 对于安装URL键或附件网址是不是正确格式的URL。在这种情况下,您if let
将不会被输入,并且contentHandler
不会被调用!这不仅会导致服务扩展被锁定,还会阻止传递没有附件URL的任何通知!添加一个else
,contentHandler
以解决此问题。
下载后,尽管存在另一个问题。iOS将需要知道您要在附件中放入哪种数据。附件选项字典允许您包括有关附件的类型信息。获取下载文件的MIME类型,然后从中创建一个统一类型标识符。然后,可以在选项字典中使用统一类型标识符字符串。
我将在iOS通知书中深入介绍所有这些内容。现在可用的示例章节涉及将图像添加到通知中。
我无法通过parse.com正确设置推送通知。我相信我的推送是因为它们通过解析显示在我的推送日志中。但是,无论我的推送发送到哪里(app或仪表盘),“发送的推送”总是显示0。我知道这可能是一个复杂的任务,所以任何帮助将是非常感谢!下面是我的代码: AppDelegate.m InboxTableViewController.m ViewDidLoad
我用push notification与解析服务器连接了应用程序,但问题是我遇到了错误,它说:registerforRemotenotification类型在IOS 8.0版本中不推荐使用:请使用register for remote notification和register user notification设置。但这段代码是针对iOS8的。 有谁能帮我找到正确的代码吗?
iOS消息推送在工作灯,接收通知时,应用程序在后台作为徽章,但当我点击徽章也我得到有效载荷作为警报。我只需要徽章时,应用程序在后台运行。 实际上,我需要在应用程序位于前台时显示警报,如果应用程序位于后台,则显示徽章。在我的push received handler函数中,我正在检查这一点。但在ios中,只有当用户点击badge时,处理器函数get才会触发,而在Android中,当push收到时,处
首先,我想声明我一直在研究推送通知和web通知之间的关系,但我有点困惑。 我从这里读到PWAs的推送通知在Safari上的iOS(iPhone)不起作用:从PWA向iOS发送推送通知 然而,如果iPhone用户使用的是Chrome,这是否意味着它们可以工作呢?或者推送通知在任何浏览器上对iPhone中的PWAs都不起作用? 这就把我带到了web通知。web通知在后台对PWAs起作用吗?我的问题是w
本文向大家介绍iOS推送之本地通知UILocalNotification,包括了iOS推送之本地通知UILocalNotification的使用技巧和注意事项,需要的朋友参考一下 摘要: Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本
我正在尝试用远程通知处理所有可能的情况。当调用Foreground-DidReceiverEmoteNotification中的app时我就ok了。问题是当应用程序处于后台状态时,我收到推送通知。什么都不叫。如何让用户知道他有新的远程通知当应用程序回到前台?