使用新的iOS 6,Apple添加了新的UIActivityViewController(图像A)共享菜单,该菜单只有很少的图标按钮可供共享,而不仅仅是旧的UIActionSheet文本按钮.
我想显示一个UIActivityViewController,但有自定义按钮.我知道他们有一个可以显示的默认应用程序列表(邮件,消息,Facebook,Twitter等...)但我想自定义当你点击这些按钮时会发生什么.当您单击邮件共享图标时,它会打开带有新邮件的邮件应用程序,例如我喜欢它,如果单击邮件应用程序时,它会打开Twitter应用程序(不是真的,只是与默认值不同的东西) .现在我似乎找不到在按钮后面添加自己的方法的方法.
使用最新的ShareKit,他们添加了Instagram共享,当您选择与其共享时,将显示一个看起来与UIActivityViewController屏幕完全相同的新视图(图像B).他们似乎已经想出如何添加自定义按钮来执行自定义操作.我搜索了ShareKit代码,但似乎无法找到它在哪里或如何运作.
也许我问的是甚至不可能,但任何帮助表示赞赏!
图像A.
图像B.
当您使用UIActivityViewController共享URL时,它只显示Safari指南针.我知道这应该向用户显示他们正在共享链接,但是有可能让它显示缩略图/图像吗?我意识到如果我尝试共享图像会这样做,但我想在这里分享一个链接.
我正在使用UIActivityViewController从我的应用程序内共享图像和网址.我在格式化facebook帖子时遇到了麻烦.我使用子类附加图像,UIActivityItemProvider并以相同的方式提供帖子的文本.
我想添加一个网址,但它需要我的应用程序自定义网址方案就像这样
myurl://image?url=http://imageurl.com
问题是,当发布时,只有网址的后半部分是可点击的(从http://开始).这意味着它无法使用网址打开我的应用.
还有另一种方法吗?我知道我可以在Facebook上创建一个应用程序,但是如何使用UIActivityViewController?将两者结合在一起?
谢谢
从UIActivityViewController发布到Facebook时是否可以提供Facebook API密钥?
如果没有,那么如何添加要与UIActivityViewController一起使用的Facebook SDK呢?
我基本上想使用共享表来制作Facebook帖子,但希望它与我的应用程序进行深度链接.
可能?
我想在whatsapp中分享多个视频.我是使用UIActivityViewController进行的.首先我将视频存储在iPhone上并发送URL(NSURL).如果我发送一个URL它可以工作但如果我发送多个URL它不起作用.UIActivityViewController做不显示whatsapp图标.
NSURL *urlOne = url;
NSURL *urlTwo = url;
NSArray *items = [NSArray arrayWithObjects:urlOne,urlTwo,nil];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
NSArray *excludedActivities = @[UIActivityTypePostToWeibo,UIActivityTypeMail,
UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,UIActivityTypeAirDrop, UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;
[self presentViewController:controller animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
我想知道,whatsapp支持多个视频共享,如果它支持如何做到这一点?
在我的应用程序中,我想创建一个分享按钮与WhatsApp,Facebook,Twitter,邮件这样.
这是我的代码
-(IBAction)share:(id)sender
{
NSString *shareText = @"Hi This is a Reward Game App";
NSArray *itemsToShare = @[shareText];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:itemsToShare applicationActivities:nil];
activityVC.excludedActivityTypes = @[UIActivityTypePostToWeibo,UIActivityTypePostToTwitter,UIActivityTypePostToFacebook,UIActivityTypeMail,UIActivityTypeMessage,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo];
[self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
我正在写这个代码我的模拟器显示这样,
它只显示邮件和Facebook图标,我想要像这样的无聊的whatsup图标消息.
我创建了一个简单的应用程序,使用UIActivityViewController如下.
let text = "Test Text"
let printData = UISimpleTextPrintFormatter(text: text)
let vc = UIActivityViewController(activityItems: [text, printData], applicationActivities: nil)
vc.completionWithItemsHandler = { (type,completed,items,error) in
print("completed. type=\(type) completed=\(completed) items=\(items) error=\(error)")
}
vc.modalPresentationStyle = .popover
vc.popoverPresentationController?.sourceView = self.openActivityButton
vc.popoverPresentationController?.sourceRect = self.openActivityButton.bounds
vc.popoverPresentationController?.permittedArrowDirections = .up
vc.popoverPresentationController?.delegate = self
self.present(vc, animated: true) { () in
}
Run Code Online (Sandbox Code Playgroud)
我在iOS 10(Xcode 8.0 beta 6)上运行此应用程序.
completionWithItemsHandler会调用它.completionWithItemsHandler会调用它.completionWithItemsHandler会调用它.completionWithItemsHandler是不叫.这种奇怪的行为发生在iOS 10上,但没有发生在iOS9上(处理程序是在iOS9上调用的)
这是iOS 10的错误吗?如果是这样,是否有任何变通方法来检测UIActivityController …
我们的应用仅支持纵向模式.介绍UIActivityViewController的工作原理.
但是,与"消息"选项共享会导致应用崩溃:
***由于未捕获的异常'UIApplicationInvalidInterfaceOrientation'而终止应用程序,原因:'支持的方向与应用程序没有共同的方向,[MFMessageComposeViewController shouldAutorotate]返回YES'
与另一个选项共享,例如Facebook Messenger,可以使用.
像这样的类似SO问题的解决方案不起作用,因为他们建议支持所有方向.我们只想支持肖像.
1)我们如何支持"消息"共享选项,同时仅支持纵向方向,即仅支持Info.plist中的纵向方向?
2)为什么我们能够在Info.plist中仅支持纵向的其他应用程序中支持"消息"共享选项,但不支持此选项?我们应该在哪里寻找调试目的?
// Define share objects
let objectsToShare = ["test message"] as [Any]
// Configure UIActivityViewController
let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityViewController.excludedActivityTypes =
[UIActivityType.addToReadingList,
UIActivityType.assignToContact,
UIActivityType.print,
UIActivityType.copyToPasteboard]
// Define completion handler
activityViewController.completionWithItemsHandler = doneSharingHandler
// Show UIActivityViewController
present(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud) ios mfmessagecomposeviewcontroller uiactivityviewcontroller swift
我在应用程序的多个先前版本中使用了UIActivityViewController实例,以便通过AirDrop和其他服务共享内容。现在,即使没有重新编译,在iOS 11 Beta中运行应用程序时,对话框(UIActivityViewController实例)也会显示以下行,并显示消息“无法加载”:
这是代码:
let handlerOk = { () -> Void in
let activityItems = [NSURL(fileURLWithPath: fullPath, isDirectory: true)]
self.viewControllerShare = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
if let viewControllerShare = self.viewControllerShare {
viewControllerShare.popoverPresentationController?.sourceView = sender
let excludedActivities = [
UIActivityType.postToFacebook,
UIActivityType.postToTwitter,
UIActivityType.postToWeibo,
//UIActivityType.message,
//UIActivityType.mail,
UIActivityType.print,
UIActivityType.copyToPasteboard,
UIActivityType.assignToContact,
UIActivityType.saveToCameraRoll,
UIActivityType.addToReadingList,
UIActivityType.postToFlickr,
UIActivityType.postToVimeo,
UIActivityType.postToTencentWeibo,
UIActivityType.openInIBooks
]
viewControllerShare.excludedActivityTypes = excludedActivities
self.present(viewControllerShare, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
目前,我正在Swift 4中使用XCode 9进行编译,但是如上所述,如果在iOS 11中运行该应用的旧版本(与XCode 8编译),我认为这并不重要。 (来自TestFlight)问题是相同的。因此,这确实看起来像是iOS 11 API问题...
关于对话框初始化,是否有任何新内容可能阻止“无法加载”行出现?
编辑:我测试了使用相同共享对话框的第三方应用程序(来自Apple),发现该行属于iCloud。但是我没有在我的应用程序中使用iCloud,所以以前的UIActivityViewController行为是正确的:它什么也没显示。因此,我做了一个实验:从iOS的“设置”中禁用了该第三方应用程序的iCloud权限,它显示了同样不友好的“无法加载”消息。我希望这不是最终的iOS 11版本的工作方式,而只是一个Beta问题。
就是说,仍然欢迎解决方法!谢谢!
如果我使用以下代码
NSArray * activityItems = @[tempFileURL];
UIActivityViewController * activityViewController =
[[UIActivityViewController alloc] initWithActivityItems: activityItems
applicationActivities: nil];
[self.parentViewController presentViewController: activityViewController
animated: YES
completion: nil];
Run Code Online (Sandbox Code Playgroud)
然后选择"保存到文件",我看到以下对话框:
我想先介绍一下这个对话框,而不需要先去UIActivityViewController(以及"保存到文件"选项).我无法找到另一种方法来做到这一点.有什么建议?
具体来说,我的问题归结为:我怎样才能让用户指定文件应保存的位置而不进行操作UIActivityViewController?