Невозможно вставить COPY_SEND при программном вызове VC в расширении содержимого уведомлений - PullRequest
0 голосов
/ 13 октября 2018

После создания расширения содержимого уведомлений, а затем удаления NSExtensionMainStoryboard и замены его на NSExtensionPrincipalClass в файле info.plist и надлежащего вызова module.viewController, а затем отладки расширения я вижу следующую ошибку?

NotificationExtension[58062: 21665141] [Common] _BSMachError: порт 5c03;(os / kern) недопустимая возможность (0x14) «Невозможно вставить COPY_SEND»

ниже - NotificationExtensionViewControllerCode

import UIKit
import UserNotifications
import UserNotificationsUI

class NotificationViewController: UIViewController, UNNotificationContentExtension {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any required interface initialization here.
    }

    func didReceive(_ notification: UNNotification) {

    }

}

Что является причиной ошибки и как ее устранить?

Если вы делаете то же самое выше, но используете NSExtensionMainStoryboard, вызывающую раскадровку, но удаляете метку, вы получаете ту же ошибку!

заранее спасибо.

1 Ответ

0 голосов
/ 10 декабря 2018

Вам необходимо позвонить startAccessingSecurityScopedResource() по URL-адресу вложения (в didReceive).Некоторые гении в Apple решили, что расширению уведомлений опасно просто получать доступ к файлу в хранилище уведомлений .Конечно, это хорошо задокументировано (НЕ!)

if let attachment = notification.request.content.attachments.first {
    if attachment.url.startAccessingSecurityScopedResource() {
        if let data = NSData(contentsOfFile: attachment.url.path) as? Data {
            self.uiImage.image = UIImage(data: data) // <- that's the image view
            attachment.url.stopAccessingSecurityScopedResource()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...