2017-02-02 13 views
1

メディア添付(画像URL)付きのiOSプッシュ通知を送信しようとしています.IOS用のOneSignal SDK 2.2.2がありますが、全く動作しません。次のように、articleでは、通知内にイメージを表示するためにサービス拡張を実装する必要はないと思われます。 (iOS 10)。通知サービスアプリの拡張機能は、メディアをリモート通知で表示するために必須ですか?

通知サービスアプリ拡張を作成する必要がありますか?

+1

にそれを送信する前UNNotificationAttachmentとしてダウンロードローカルURLをバンドルし、画像をダウンロードする必要がありますはい..その必須 – iProgrammer

答えて

0

はいプッシュ通知ペイロードのhandleへの通知サービス拡張を実装してから、OSに戻してユーザーに表示する必要があります。

例: これはペイロードである場合には、受信:

{ 
     "aps": { 
      "alert": { 
      "title": "My title", 
      "subtitle": "My title" 
      }, 
      "mutable-content": 1, 
      "category": "<your_notification_category>" 
      }, 
     "data": { 
      "url": "<img_url>" 
     } 
    } 

があなたのサービスそしてOS

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { 
     self.contentHandler = contentHandler; 
     self.bestAttemptContent = [request.content mutableCopy]; 

     // Modify the notification content here... 

     if (request.content.userInfo[@"data"] && [request.content.userInfo[@"data"] isKindOfClass:[NSDictionary class]]) { 
      NSDictionary *data = request.content.userInfo[@"data"]; 
      NSLog(@"%@", data); 
      NSURL *dataURL = [NSURL URLWithString:data[@"url"]]; 
      self.task = [[NSURLSession sharedSession] downloadTaskWithURL:dataURL completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { 

       if (location) { 
        // Get the location URL and change directory 

        NSString *tempDirectory = NSTemporaryDirectory(); 
        NSURL *fileURL = [NSURL fileURLWithPath:tempDirectory]; 
        fileURL = [fileURL URLByAppendingPathComponent:[dataURL lastPathComponent]]; 
        NSError *error; 
        if ([[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) { 
         [[NSFileManager defaultManager] removeItemAtPath:[fileURL path] error:&error]; 
        } 
        [[NSFileManager defaultManager] moveItemAtURL:location toURL:fileURL error:&error]; 

        // Create UNNotificationAttachment for the notification 

        UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"" URL:fileURL options:nil error:nil]; 
        self.bestAttemptContent.attachments = @[attachment]; 
       } 

       self.contentHandler(self.bestAttemptContent); 
      }]; 
      [self.task resume]; 

     } else { 
      self.contentHandler(self.bestAttemptContent); 
     } 

    } 
} 
関連する問題