Путь к файлу (изображению) в папке расширения службы уведомлений

Я пытаюсь добавить локальное изображение (значок) в качестве вложения в удаленное уведомление на 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:&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, который лучше использовать.

person skaak    schedule 29.09.2020
comment
Я использовал URLForResource:withExtention, и это сработало. Я подозреваю, что метод pathForResource:ofType не обеспечивает правильного экранирования для создания URL-адреса. - person supernova; 29.09.2020
comment
Отличный материал ... да, это лучшая альтернатива .. - person skaak; 29.09.2020