如何在Safari中打开"打开#34;使用UIActivityViewController共享URL时出现的图标?

时间:2015-08-02 21:10:35

标签: ios uiactivityviewcontroller ios8-share-extension

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

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

作为参考,这些是我试图出现的两个活动项目。

enter image description here

2 个答案:

答案 0 :(得分:3)

看来有一个非常受欢迎的图书馆" SVWebViewController"用于在应用程序Web视图中显示。该库还包含一些可用于执行此操作的不错活动项。

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];
}

答案 1 :(得分:3)

您可以使用一些(小)库提供自定义UIActivity控件,以便在Safari中打开"打开#34;和"在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)
    }
    

可以在https://github.com/shu223/UIActivityCollection

上找到更多自定义UIActivity控件