2016-10-10 8 views
3

まず初めに私はSwiftを使って開発しています。私はObjective Cの背景を持っていますが、私は主にAndroid開発者です。写真付きのiOS 10リモート通知

実際に私はSwift 3とXcode 8でアプリケーションを開発しています。このアプリケーションには、Appleの新しいリッチプッシュ通知システムを追加する必要があります。

私は、写真、ビデオ、およびgifでローカルの豊富な通知の例を追加することができました。しかし、私は典型的なインターネットサーバーでホストされている写真で遠隔通知を表示する必要があります。

私はこのコードを使用していますローカル通知を起動するには:

@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ファイルをロードする必要があります。誰かが、ローカルピクチャをロードするのではなく、リモートファイルをロードする方法を知っていますか?

ありがとう

+0

「let url = URL(文字列: "https://.....jpg")」とはどういう意味ですか?またはurlがローカルファイルを指している必要があります。もしあなたが私がそれを試してきた、おそらく私はあなたが私に言ったように最初にそれをダウンロードする必要があるかもしれません – jbe

+0

ファイルをダウンロードする必要がありますquess。 Swift 3で写真をダウンロードするのに良いチュートリアルをお勧めしますか?ありがとう。 – gabicuesta

+0

@gabicuestaあなたは通知で画像を表示することができるよりも先にファイルをダウンロードする必要があります.. –

答えて

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 
} 

} 
関連する問題