Как получить значок "Открыть в 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];
}