我正在使用UIActivityViewController为我的应用程序共享一些东西.它适用于iOS8之前的任何设备.问题是文本,图像不会显示在iOS 8设备或模拟器中的电子邮件,推特,Facebook中.
这是我的代码:
NSString *textObject = @"Test";
NSString *urlString = @"http://test.com";
UIImage* image = [UIImage imageNamed:@"logo"];
NSURL *url = [NSURL URLWithString:urlString];
NSArray *activityItems = [NSArray arrayWithObjects:textObject, url, image, nil];
UIActivityViewController *avc = [[UIActivityViewController alloc]
initWithActivityItems:activityItems
applicationActivities:nil];
avc.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard ];
[self presentViewController:avc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
我做错了什么吗?谢谢.
编辑:
新的Xcode 6.1和iOS 8.1无法解决问题.它会导致电子邮件崩溃.以下是一些截图(以电子邮件共享为例):


应用程序崩溃时出现"MailCompositionService"异常.错误消息的一部分是:
进程:MailCompositionService [3775]路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/Applications/MailCompositionService.app/MailCompositionService标识符:MailCompositionService版本:
1.0(1.0)代码类型:X86-64(Native)父进程:launchd_sim [3725]负责人:launchd_sim [3725]用户ID:501发布日期/时间:2014-10-22 10:31:19.064 +0800操作系统版本:
Mac OS X 10.10(14A389)报告版本:11匿名UUID:
B1EC6B56-DD7F-36A3-1506-B8CE84AB3FEB自启动以来的时间清醒:9800秒
崩溃的线程:0调度队列:com.apple.main-thread
异常类型:EXC_CRASH(SIGABRT)异常代码:
0x0000000000000000,0x0000000000000000特定于应用程序的信息: *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]:nil参数'以NSException类型的未捕获异常终止abort()名为CoreSimulator 110.4 …
敌人设定共享主题,压倒一切
func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String {
return "mySubject"
}
Run Code Online (Sandbox Code Playgroud)
分享时,不适用于Outlook应用程序.此方法不适用于outlook,适用于其他应用程序,如邮件,Gmail等.
发现一些应用程序像Yelp,Apple地图,谷歌地图能够在outlook中设置主题.如何实现它?
在我的应用程序中,我添加了我的共享扩展程序,它工作正常,但我面临一个问题当我通过邀请应用程序时,UIActivityViewController我会显示我的应用程序扩展程序。如何隐藏我的应用程序扩展我自己的应用程序?
我将视频记录在我的应用程序中,并将其写入temp目录,以允许用户通过UIActivityViewController共享它。视频可以在应用程序中成功播放,并且可以通过UIActivityViewController成功地通过消息发送,共享到Facebook并保存到相机胶卷中。但是,当我尝试通过WhatsApp分享时,出现以下错误:
Failed to determine whether URL /private/var/mobile/Containers/Data/Application/E7F57458-A5F9-44CB-86FA-ACC4309C7473/tmp/65CB72B3-373E-42F2-8A80-9888E00C2268.mp4 (n) is managed by a file provider
我无法找到有关此错误的更多信息。有谁知道为什么会这样?
我在排除 custom UIActivityTypes 时遇到问题UIActivityViewController
我有…
extension UIActivityType {
static let fbMessenger = UIActivityType("com.facebook.Messenger.ShareExtension")
static let telegram = UIActivityType("ph.telegra.Telegraph.Share")
}
Run Code Online (Sandbox Code Playgroud)
进而
let activityController = UIActivityViewController(activityItems: <sharingItems>, applicationActivities: nil)
activityController.excludedActivityTypes = [.postToFacebook, .fbMessenger, .telegram]
present(activityController, animated: true)
Run Code Online (Sandbox Code Playgroud)
使用上面排除的类型,显示的共享表正确排除了 Facebook,但仍显示 2 种自定义类型(Messenger 和 Telegraph)
有趣的是,activityType在completionWithItemsHandler选择我试图排除的 2 个中的任何一个时检查显示它们确实具有上述原始值。
可以UIActivityType排除customs吗?有没有想过我缺少什么?
这是我的代码,只有thumbnailImageForActivityType 未被调用...
class ShareMovieEvent: NSObject, UIActivityItemSource {
let movieDate: String
let movieTitle: String
let movieDescription: String
let imageHeader: UIImage
init(movieDate: String ,movieTitle:String, movieDescription:String, imageHeader:UIImage) {
self.movieDate = movieDate
self.movieTitle = movieTitle
self.movieDescription = movieDescription
self.imageHeader = imageHeader
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return ""
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
if activityType == UIActivity.ActivityType.message {
return "\(movieDate) \n\n \(movieTitle) \n\n \(movieDescription)"
} else if activityType == UIActivity.ActivityType.mail {
return "\(movieDate) \n\n \(movieTitle) …Run Code Online (Sandbox Code Playgroud) 我试图与UIActivityViewController共享多个图像,但到目前为止,我发现的例子一次只共享1个图像.有什么建议?
我有一个UIActivityViewController允许用户将他们创建的图像分享到几种活动类型之一(Facebook,Twitter,保存到相机胶卷,打印等).
由于我希望图像以不同的质量水平保存/发送,具体取决于活动(打印的高分辨率,推特的低分辨率),我使用自定义UIActivityItemProvider(duh)提供图像.
渲染高分辨率版本需要一些时间,所以我想在它正在做它的事情时显示一个活动指示器.实际上,苹果文档提到了这样做.
但我似乎无法找出"正确"的地方来显示我的进度指示器...他们应该去哪里?
更新:
在- (id) activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType方法中尝试以下内容:
[self performSelectorOnMainThread:@selector(startSpinnerWithMessage:) withObject:message waitUntilDone:YES];
self.shareImage = [self.delegate imageForActivityOfType:activityType]; // code that actually generates the image; takes a while.
[self performSelectorOnMainThread:@selector(endSpinner) withObject:nil waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud)
......不做这个工作.当我点击活动按钮时,UI会在生成图像时冻结,然后当它完成时,我会看到微调器一瞬间然后消失.
我认为endSpinner调用的定位是有道理的......然而,似乎startSpinner调用需要去其他地方.不知道该怎么做.
我正在使用UIActivityViewController进行分享按钮.当我从列表中选择邮件选项时它显示文本和网址但是当我选择Facebook或Twitter时它只显示文本而不是网址.我搜索了很多但没有得到我的问题的解决方案.我得到了在url中添加"http"的另一个解决方案,但这可能不在url中添加http.我的代码是 -
NSArray *activityItems;
NSString *str;
NSString *noteStr;
str = [NSString stringWithFormat:@"com.boxscoregames.squares://square?%@",squareID];
noteStr = @"You have been invited to join the Square game, please follow the link below on your iPhone.";
NSURL *url = [NSURL URLWithString:str];
// str =[NSString stringWithFormat:@"<html><a href=\"%@\">%@</a></html>" ,str,str];
activityItems = @[noteStr,url];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:activityVC animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud) ios ×8
swift ×4
objective-c ×3
xcode6 ×2
avfoundation ×1
ios8 ×1
swift3 ×1
uiactivity ×1
whatsapp ×1