13

「Safari で開く」および「Chrome で開く」アクティビティ項目が共有シートに表示されるように、アプリケーションで URL を適切に共有するのに苦労しています。URL をいくつかの方法で共有してみました。

NSURL *data = _article.url;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];
  • [NSData dataWithContentsOfURL:] を使用して NSData アイテムとして;
  • NSURLとして
  • [myURL absoluteString] を使用した NSString として;
  • NSURL (URL) と NSString (タイトル) の組み合わせ

参考までに、これらは私が表示しようとしている 2 つのアクティビティ アイテムです。

ここに画像の説明を入力

4

2 に答える 2

3

アプリの Web ビューに表示するための非常に人気のあるライブラリ「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];
}
于 2015-08-02T21:20:32.240 に答える
3

UIActivity「Safariで開く」および「Chromeで開く」アクティビティ項目を取得するためのカスタムコントロールを提供する、使用できる(小さな)ライブラリがいくつかあります。

  • サファリ: 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 に答える