使用UIActivityViewController共享URL时,如何显示"在Safari中打开"图标?

Bla*_*ake 12 ios uiactivityviewcontroller ios8-share-extension

我正在努力让我的应用程序正确共享URL,以便在共享表中显示"在Safari中打开"和"在Chrome中打开"活动项目.我尝试过几种不同的方式共享URL:

NSURL *data = _article.url;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)
  • 使用[NSData dataWithContentsOfURL:]作为NSData项目;
  • 作为NSURL
  • 使用[myURL absoluteString]作为NSString;
  • 结合NSURL(网址)和NSString(标题)

作为参考,这些是我想要出现的两个活动项目.

在此输入图像描述

Pie*_*one 5

您可以使用一些(小型)库来提供自定义控件UIActivity来获取“在 Safari 中打开”和“在 Chrome 中打开”活动项。

  • Safari:TUSafari活动
  • Chrome:ARChrome活动

    @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)
    }
    
    Run Code Online (Sandbox Code Playgroud)

更多自定义控件可以在https://github.com/shu223/UIActivityCollectionUIActivity上找到


Bla*_*ake 3

似乎有一个非常流行的库“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];
}
Run Code Online (Sandbox Code Playgroud)

  • 苹果公司在共享 NSURL 时没有内置 Safari 选项,这确实很糟糕。 (2认同)