3

首先,我是使用 Swift 开发的新手,我有 Objective C 背景,但我主要是一名 Android 开发人员。

实际上我正在用 Swift 3 和 Xcode 8 开发一个应用程序。我需要在这个应用程序中添加 Apple 新的丰富推送通知系统。

我已经能够添加带有图片、视频和 gif 的本地丰富通知示例。但我需要显示远程通知,其中包含托管在典型 Internet 服务器上的图片。

要启动本地通知,我正在使用以下代码:

@IBAction func launchPicNotification(sender: UIButton) {
    let content = UNMutableNotificationContent()
    content.title = "Title"
    content.body = "Body"
    content.sound = UNNotificationSound.default()

    let url = Bundle.main.url(forResource:"foto", withExtension: "jpg")

    let attachment = try? UNNotificationAttachment(identifier: "Notification",
                                                   url: url!,
                                                   options: [:])

    if let attachment = attachment {
        print("Yes")
        content.attachments.append(attachment)
    }else{
        print("No")
    }

    let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 10.0, repeats: false)
    let request = UNNotificationRequest(identifier:"identificador", content: content, trigger: trigger)

    UNUserNotificationCenter.current().add(request){(error) in

        if (error != nil){

            //handle here

        }

    }
}

我需要加载一个远程 jpg 文件作为附加图像。有人知道如何加载远程文件而不是加载本地图片吗?

谢谢

4

1 回答 1

1

我向 UIImage 添加了一个扩展来处理这个问题。从下载的数据创建 UIImage 后,您可以调用此函数来创建本地 URL。

extension UIImage {

func createLocalURL() -> URL? {

    guard let data = UIImagePNGRepresentation(self) else {
        print("Coule not get UIImagePNGRepresentation Data for photo")
        return nil
    }

    let localUrl = self.getDocumentsDirectory().appendingPathComponent("copy.png")

    do {
        try data.write(to: localUrl)
    } catch let error {
        print("Failed to write to URL")
        print(error)
    }
    return localUrl
}

}
于 2017-01-16T18:04:30.860 回答