#ios #objective-c #attachment #unnotificationserviceextension #unnotificationattachment
#iOS #цель-c #привязанность #unnotificationserviceextension #отключение привязки #objective-c #вложение
Вопрос:
Я пытаюсь добавить локальное изображение (значок) в качестве вложения к удаленному уведомлению в iOS 12. Другими словами, URL-адрес изображения не передается в уведомлении userInfo, а определяется внутренне на основе других критериев в userInfo. Поэтому я хочу, чтобы к приложению прилагалась библиотека значков на выбор. Я не могу определить, каким был бы относительный URL-адрес, если бы я хотел добавить изображение такого рода в уведомление. Это то, что я пытаюсь сделать, и файл «example.png» находится в папке «Расширение службы уведомлений».
Я хочу знать, как скопировать папку с изображениями из xcode на устройство, на которое я создаю.
Затем я хочу знать, каким будет относительный путь для доступа к этим изображениям, которые будут использоваться для вложений.
UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.title = @"Title";
content.body = @"Body";
content.sound = [UNNotificationSound defaultSound];
NSURL *imageURL = [NSURL fileURLWithPath:@"example.png"];
NSError *error;
UNNotificationAttachment *icon = [UNNotificationAttachment attachmentWithIdentifier:@"image" URL:imageURL options:nil error:amp;error];
if (error)
{
NSLog(@"error while storing image attachment in notification: %@", error);
}
if (icon)
{
content.attachments = @[icon];
}
Ответ №1:
Просто скопируйте каталог изображений в свой проект Xcode. Xcode свяжет его и скопирует на устройство. На устройстве выполните следующие действия (взятые непосредственно из документации)
NSBundle *main = [NSBundle mainBundle];
NSString *resourcePath = [main pathForResource:@"Seagull" ofType:@"jpg"];
Это из документов, но есть и URLForResource:withExtention
то, что лучше использовать.
Комментарии:
1. Я использовал
URLForResource:withExtention
, и это сработало. Я подозреваю, чтоpathForResource:ofType
метод не обеспечивал надлежащего экранирования для создания URL-адреса.2. Отличный материал… да, это лучшая альтернатива..