13

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

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

作为参考,这是我试图展示的两个活动项目。

在此处输入图像描述

4

2 回答 2

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];
}
于 2015-08-02T21:20:32.240 回答
3

您可以使用一些(小型)库来提供自定义控件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上找到

于 2017-08-27T20:24:47.523 回答