UNNotificationServiceExtension
を使用して、画像添付ファイルを使用してiOS 10で豊富な通知を作成しています。ダウンロードする画像がもう少し大きい場合を除いて、小さい画像の場合はすべて正常に動作します(e.g. 7MB)。大きな画像をUNNotificationServiceExtensionにダウンロード
この場合、ダウンロードは開始されますが、終了することはなく、ダウンロードの開始直後に「最善の試行」通知が表示されます。サイズは:)
私はiOSのは、私はできるだけ早くコンテンツを配信するために持っていることを私に通知することになっているserviceExtensionTimeWillExpire
を実装しなかったのは問題ないはずので
Apple's docsによると、画像は10メガバイトまでとすることができますが、この方法はではなく、と呼ばれるので、何が起こっているのだろうかと思います。
更新1 ローカルに保存されているときに同じ画像が正常に機能することに気付きました。画像をダウンロードする際に問題が発生しているようです。しかし、以前にも述べたように、ダウンロードはほぼ直ちに中止されます。 Program ended with exit code: 0
が疑わしい
2017-03-30 14:51:43.723669 D360TestAppNotificationExtension[3393:398992] [D360Extension]: Handling notification request content
2017-03-30 14:51:43.724103 D360TestAppNotificationExtension[3393:398992] [D360Extension]: Downloading notification attachment: https://upload.wikimedia.org/wikipedia/commons/b/b2/Bled_Castle_05.jpg
Program ended with exit code: 0
:私はXcodeでこれをデバッグするとき
実装はまっすぐ進む
- (BOOL)handleNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler
{
self.bestAttemptContent = (UNMutableNotificationContent *) [request.content mutableCopy];
UNMutableNotificationContent *content = [self.bestAttemptContent mutableCopy];
NSString *urlString = [content.userInfo valueForKeyPath:@"attachment-url"];
NSLog(@"Downloading notification attachment completed with: %@", url.absoluteString);
NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData *_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) {
NSLog(@"Downloading notification attachment %@", error == nil ? @"success" : [NSString stringWithFormat:@"error: %@", error]);
NSError *fileError;
UNNotificationAttachment *attachment = [UNNotificationAttachment d360_createWithFileName:url.lastPathComponent identifier:url.absoluteString data:data options:nil error:&fileError];
if (!attachment) {
NSLog(@"Could not create local attachment file: %@", fileError);
contentHandler(content);
return;
}
NSLog(@"Adding attachment: %@", attachment);
NSMutableArray *attachments = content.attachments ? [content.attachments mutableCopy] : [NSMutableArray array];
[attachments addObject:attachment];
content.attachments = attachments;
contentHandler(content);
}];
[task resume];
return YES;
}
- (void)serviceExtensionTimeWillExpire
{
NSLog(@"Service extension expired. Using best attempt content %@", self.bestAttemptContent);
self.contentHandler(self.bestAttemptContent);
}
、私は次のログを参照しています。何が起こっているか考えてみませんか?
おかげ 月