MacOS Mojave UNNotificationAttachment миниатюра не отображается в уведомлениях - PullRequest
0 голосов
/ 27 января 2019

Это (упрощенный) код, который я пытаюсь запустить. Файл изображения существует, и приложение не падает. Что происходит в том, что изображение удаляется из местоположения, как указано в документации для уведомлений пользователей. Однако миниатюра изображения не отображается в генерируемом уведомлении.

Я не уверен, что еще мне здесь не хватает.

#import <UserNotifications/UserNotifications.h>

int main(int argc, const char * argv[]) {
    UNUserNotificationCenter* notificationCenter = [UNUserNotificationCenter currentNotificationCenter];
    [notificationCenter requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)
                                      completionHandler:^(BOOL granted, NSError * _Nullable error) {}
    ];

    UNMutableNotificationContent *localNotification = [UNMutableNotificationContent new];
    localNotification.title = [NSString localizedUserNotificationStringForKey:@"Title" arguments:nil];
    localNotification.body = [NSString localizedUserNotificationStringForKey:@"Body Text" arguments:nil];
    localNotification.sound = [UNNotificationSound defaultSound];

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES)lastObject];
    NSString *testUrl = [path stringByAppendingPathComponent:@"imageFile.jpg"];

    NSURL* url = [NSURL fileURLWithPath:testUrl];
    CGRect rect = CGRectMake(0.25, 0.25, 0.75, 0.75);
    NSDictionary* options = @ {
        @"UNNotificationAttachmentOptionsTypeHintKey": (__bridge NSString*) kUTTypeJPEG,
        @"UNNotificationOptionsThumbnailHiddenKey" : @NO,
        @"UNNotificationAttachmentOptionsThumbnailClippingRectKey": [NSValue valueWithRect: rect]
    };
    UNNotificationAttachment* imageAttachment = [UNNotificationAttachment attachmentWithIdentifier:@""
                                                                                           URL:url
                                                                                       options:options
                                                                                         error:nil];


    localNotification.attachments=@[imageAttachment];

    UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1 repeats:NO];
    UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"Identifier" content: localNotification trigger:trigger];

    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        NSLog(@"Notification created");
    }];

    [NSThread sleepForTimeInterval:100.0f];

    return 0;
}

1 Ответ

0 голосов
/ 29 апреля 2019

Проверьте, настроен ли ключ NSUserNotificationAlertStyle

Проверьте ответ системы ((BOOL предоставлен, NSError * _Nullable error)), если вы получаете ошибку, укажите ее.

Добавить уведомление в блок завершения.

Не запускайте код в main, приложение может быть неправильно инициализировано, вместо этого используйте AppDelegate appDidFinishLaunching.

Тест с помощью triggerWithTimeInterval: [NSDate date] .timeIntervalSince1970 + 30 (это противоречит документации, но работает в моем случае)

Свернуть ваше приложение во время доставки, оно может быть не доставлено, когда приложение находится в фокусе.

Также перейдите на«Системные настройки» и проверьте, разрешено ли вашему приложению публиковать уведомления. (Если вам не удается найти свое приложение в списке, сообщите нам, возможно, это ключ к проблеме)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...