Вызов NSSharingService из расширения FinderSync

Я пытаюсь отправить электронное письмо (открыть приложение почтового клиента по умолчанию) из своего расширения FinderSync.

              let service = NSSharingService(named: NSSharingService.Name.composeEmail)
        if(service != nil)
        {
            service!.recipients = ["test@gmail.com"]
            service!.subject = "Test Mail"
           if service!.canPerform(withItems: ["Test Mail body"])
           {
                service!.perform(withItems: ["Test Mail body"])
           }
           else
           {
                  //fail for me
          }
        }

Тот же код выполняется из AppDelegate / ViewController при запуске основного приложения, но не работает при вызове из расширения.

1 ответ

FinderSync - это NSExtension что не разрешено использовать NSSharingService

      /* @class SHKSharingService (ShareKit.framework) */  

-(char)canPerformWithItems:(NSArray *)items {
    if (([[SHKSharingService class] isShareKitPlugInService] || ([items count] > 0x1388)) {
    return NO;
}

isShareKitPlugInService определяется как

      [[NSBundle mainBundle] infoDictionary][@"NSExtension"]
Другие вопросы по тегам