В моем приложении-хозяине я загружаю пользовательскую папку изображений emojis после распаковки, успешно сохраняя ее ниже.Невозможно получить изображения в приложении расширения из контейнера общего доступа группы приложений в iOS 10
NSURL* shareContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.company.app.PushServiceExtn"];
И без какого-либо вопроса, когда пользователь, нажав на значок Emojis все пользовательские Emojis шоу в сетке вместо клавиатуры, shareContainerURL.
Я создал PushNotification Service Extension, где мне нужно показать пользовательское изображение emojis, извлекая имя emoji из полезной нагрузки всякий раз, когда наступает наводка. используя нижеприведенный код.
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
NSDictionary* mediaAttachment = [self.bestAttemptContent.userInfo objectForKey:@"media-attachment"];
NSString* attachType = [mediaAttachment objectForKey:@"attachType"];
if ([attachType isEqualToString:@"emoji"]) {
NSString* strEmojiURL = [mediaAttachment objectForKey:@"url"];
self.bestAttemptContent.title = strEmojiURL;
NSString* emojiName = [[strEmojiURL stringByRemovingPercentEncoding] lastPathComponent];
NSString* strUnpresseedEmojiPath = [self getFullPath:@"emoji/Pressed"];
NSString* strImagePath = [NSString stringWithFormat:@"%@/%@ Pressed.png",strUnpresseedEmojiPath, emojiName];
NSURL* fileURL = [NSURL fileURLWithPath:strImagePath];
NSData *imageData = [NSData dataWithContentsOfURL:fileURL];
UIImage *image = [UIImage imageWithData:imageData];
if (image) {
NSError* error;
// CGRect rect = CGRectMake(0,0,50,50);
// @{UNNotificationAttachmentOptionsThumbnailClippingRectKey:(__bridge NSDictionary*)CGRectCreateDictionaryRepresentation(rect)} option dict;
UNNotificationAttachment * attachement = [UNNotificationAttachment attachmentWithIdentifier:strImagePath.lastPathComponent URL:fileURL options:nil error:&error];
if (error == nil) {
self.bestAttemptContent.attachments = @[attachement];
}
}
}
self.contentHandler(self.bestAttemptContent);
}
- (NSString *)getFullPath:(NSString *)file {
NSURL* shareContainerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.company.app.PushServiceExtn"];
return [shareContainerURL.path stringByAppendingPathComponent: file];
}
Я всегда получаю правильный URL, но второй раз я получаю ноль изображения, но в первый раз каждого изображения он работает. Не удалось получить основную причину. Любая помощь была бы оценена.
Ниже приведена ошибка, которая произошла второй раз для каждого изображения.
2016-10-27 17:34:59.081026 pushNotificationServiceExtension[651:34632] Attachement Error = Error Domain=UNErrorDomain Code=100 "Invalid attachment file URL" UserInfo={NSLocalizedDescription=Invalid attachment file URL}
Также, пожалуйста, дайте мне знать, как просмотреть App Group совместно контейнер, не удалось найти способ просмотра файлов, содержащихся внутри.
* Update = * Файл удаляется после показа в push-уведомлении.
Это ключ, что если изображение * не * внутри пакета приложения, оно * перемещено * (т. Е. Удалено). – dbreaux