Как получить значок "Открыть в Safari" при совместном использовании URL-адреса с помощью UIActivityViewController?

Я изо всех сил пытаюсь заставить свое приложение правильно предоставить URL-адрес, чтобы элементы активности "Открыть в Safari" и "Открыть в Chrome" отображались в общем списке. Я попытался поделиться URL несколькими разными способами:

NSURL *data = _article.url;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];
  • В качестве элемента NSData используется [NSData dataWithContentsOfURL:];
  • Как NSURL
  • В качестве NSString, используя [myURL absoluteString];
  • С комбинацией NSURL (URL) и NSString (название)

Для справки, это два элемента активности, которые я пытаюсь показать.

2 ответа

Есть несколько (маленьких) библиотек, которые вы можете использовать UIActivity элементы управления для получения элементов действий "Открыть в Safari" и "Открыть в Chrome".

  • Safari: TUSafariActivity
  • Chrome: ARChromeActivity

    @IBAction func shareClick(_ sender: Any) {
       var sharingItems = [AnyObject]()
       var sharingActivities = [UIActivity]()
    
       sharingItems.append(URL(string: shareURL)! as AnyObject)
       sharingActivities.append(TUSafariActivity())
       sharingActivities.append(ARChromeActivity())
    
       let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: sharingActivities)
       activityViewController.popoverPresentationController?.barButtonItem =    self.navigationItem.rightBarButtonItem;
       self.present(activityViewController, animated: true, completion: nil)
    }
    

Еще больше пользовательских UIActivity элементы управления можно найти на https://github.com/shu223/UIActivityCollection

Похоже, есть очень популярная библиотека "SVWebViewController" для отображения в веб-представлениях приложения. Библиотека также содержит некоторые полезные элементы деятельности, которые вы можете использовать для этого.

https://github.com/TransitApp/SVWebViewController

Вот пример кода, который вы можете использовать, чтобы заставить его работать (не забудьте также включить заголовки в ваш код)

#import "SVWebViewControllerActivityChrome.h"
#import "SVWebViewControllerActivitySafari.h"

- (void)share:(id)sender {
    NSArray *activities = @[[SVWebViewControllerActivitySafari new], [SVWebViewControllerActivityChrome new]];
    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[_article.url] applicationActivities:activities];
}
Другие вопросы по тегам