#ios #ios15 #ios-extensions #sfsafariviewcontroller
Вопрос:
В iOS15 появился новый API SFSafariViewController.Configuration
, который предполагает, что можно добавить пользовательскую кнопку в пользовательский интерфейс SafariViewController. Это сообщение в блоге объясняет это более подробно в разделе «Запуск пользовательского расширения».
Я безуспешно пытался реализовать это в примере приложения. Смотрите фрагмент кода ниже:
- (void)openSfariViewController {
SFSafariViewControllerConfiguration *config = [[SFSafariViewControllerConfiguration alloc] init];
// Also tried the following extensionIdentifiers without success
// com.atomicbird.DemoNotes
// com.apple.share-services
SFSafariViewControllerActivityButton *button = [[SFSafariViewControllerActivityButton alloc] initWithTemplateImage:[UIImage systemImageNamed:@"heart.fill"] extensionIdentifier:@"com.atomicbird.DemoNotes.DemoNotes"];
config.activityButton = button;
SFSafariViewController *safariVC = [[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:@"http://developer.apple.com"] configuration:config];
// safariVC.delegate = self;
[self presentViewController:safariVC animated:NO completion:nil];}
Однако я пытаюсь настроить new activityButton
, похоже, это не влияет на то, как SFSafariViewController
отображается при его представлении. Это выглядит точно так же, как и если я не настрою activityButton
. Вот некоторые вещи, которые, я думаю, я мог ошибиться:
- Я не знаю, что это такое
extensionIdentifier
, возможно, я использовал неправильное значение? - Возможно, я все понял неправильно, и ActivityButton — это не то, что я думаю?
- Возможно, расширение общего доступа настроено неправильно?
Я не смог найти в Интернете никакой информации о том, как activityButton даже должен выглядеть. Спасибо, что прочитали это далеко, дайте мне знать, если у вас есть какие-либо указания для меня.
Комментарии:
1. Идентификатор расширения — это идентификатор пакета для расширения общего доступа, включенного в ваш пакет приложений.
2. Спасибо! В данном случае идентификатор пакета
com.atomicbird.DemoNotes.$(PRODUCT_NAME:rfc1034identifier)
, который, как я понимаю, переводитсяcom.atomicbird.DemoNotes.DemoNotes
как — это то, что я использую в коде. Однако другое расширение в приложении (виджет) имеет ТОТ ЖЕ идентификатор пакета! Я попытался изменить идентификаторы пакетов расширений, чтобы они отличались друг от друга, но, к сожалению, это не решило мою проблему