2016-07-08 4 views
3

コンテンツ拡張機能を担当する通知ビューコントローラがネットワークから画像をダウンロードし、UIImageViewでレンダリングするローカル通知用に、新しい通知コンテンツ拡張機能をiOS 10で作成しようとしています。 Iテンプレートに付属するサンプルコードは、例えば、適切なInfo.plistので設定通知内容拡張ターゲットとコンテンツの拡張機能は、一部のコンテンツにラベルをレンダリングするような単純なもののために美しく働きがあります。iOS 10通知コンテンツの拡張機能:NSURLSessionを使用していますか?

func didReceive(_ notification: UNNotification) { 
    self.label.text = notification.request.content.body 
} 

私はミックスに(スウィフト3またはURLSession)NSURLSessionを導入しようとすると、ただし、通知内容は完全にロードに失敗した - いなくてもラベルはもう設定されます:

func didReceive(_ notification: UNNotification) { 

    self.label.text = notification.request.content.body 
    let session = URLSession.shared() 
    let url = URL(string: "https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World")! 

    let task = session.downloadTask(with: url) { (fileURL, response, error) in 
     if let path = fileURL?.path { 
      DispatchQueue.main.async { 
       self.imageView.image = UIImage(contentsOfFile:path) 
      } 
     } 
    } 
    task.resume() 
} 

通知でNSURLSessionの使い方ですコンテンツの拡張はできませんか?ダウンロードが完了する前にエクステンションが強制終了される可能性がありますか?もしそうなら、イメージをダウンロードしてレンダリングできるように、どうやってそれが殺されないようにすることができますか?

+0

私は同じ問題を抱えています。トランスポートアプリのセキュリティを変更しても関連するログはなく、今まで話していたドキュメントは見たことがありません。 –

答えて

1

func didReceive(_ notification: UNNotification)がContent拡張機能で呼び出された時点で、画像のダウンロードなどのコンテンツの変更が既に行われているはずです。

通知サービスエクステンションを使用して、追加のコンテンツのダウンロードを行っているようです。通知コンテンツ拡張機能は、必要に応じてカスタムユーザーインターフェイスを提供する責任を負います。

サービス拡張では、通知ペイロードのurlを使用してイメージをダウンロードし、UNNotificationオブジェクトに添付ファイルとして設定します。カスタムUIが不要な場合は、ビデオや画像のようなビジュアルメディアの添付ファイルが自動的に表示されます。それがあなたのニーズに合っていれば、通知コンテンツ拡張は実際には必要ありません。

プッシャーは、iOS 10 right hereのプッシュ通知でメディア添付ファイルを処理するための通知サービス拡張を設定するための素晴らしいチュートリアルを提供しています。

+0

これは正しい答えではありません。それはネットワークのタスクが非同期で終わるというものです。 – Gukki5

+0

@ Gukki5は、コンテンツ拡張でセマフォとブロックを作成しません。サービス拡張は、通知用のコンテンツを取得して適用する場所です。 – imnk

+0

ああ、私はコンテンツの拡張については知りませんでしたが、私はサービス拡張を使ってセマフォを使ってきました – Gukki5

-1

拡張機能のInfo.plistでアプリ転送セキュリティを無効にします。 ヒント:ファイルをtmpフォルダからキャッシュに移動して保存する

関連する問題