我正在尝试使用 UIActivityViewController 共享我的应用程序文档(文件 url )。当 ActivityViewController 弹出时(在 iPad 设备上测试),我只得到 iMessage 和 Mail 选项。我没有获得其他选项,例如 Facebook、Twitter、复制、打印等。为什么?请帮我。我还需要 Facebook、Twitter 选项。我使用 NSURL 共享的文件类型是 .txt
注意:我已经在 iOS 设置中登录了我的 Facebook、Twitter 帐户。
我正在使用的源代码:
NSURL *url = [NSURL fileURLWithPath:self.path];
NSArray *objectsToShare = @[url];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
[APP_VIEW_CONTROLLER presentViewController:activityViewController animated:YES completion:nil];
}
else
{
if (![self.activityPopover isPopoverVisible]) {
self.activityPopover = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
[self.activityPopover presentPopoverFromRect:pathViewController.pathViewWrapper.pathView.bounds inView:pathViewController.pathViewWrapper.pathView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else
{
//Dismiss if the button is tapped while pop over is visible
[self.activityPopover dismissPopoverAnimated:YES];
}
}
UIActivityViewController 中显示的内容确实很神秘。关于 Facebook 和 Twitter 1) 它可能需要是 http 或 https URL(不是文件 URL),2) 确保在您使用的模拟器或 iOS 设备上配置这些服务。
用于发布到 Facebook。该文件可以是设备本地存储的文件。但需要将其转换为 MP4。默认情况下,设备摄像头拍摄的视频是 .MOV 文件。一旦您转换为 .MP4,如果您提供本地文件位置,UIActivityController 将共享到 Facebook。
我在 FB 上工作,现在在 Twitter 上工作。完成后我将编辑我的答案并提供详细信息。
这是一些代码:
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:activities];
activityController.excludedActivityTypes = @[ UIActivityTypeMail,
UIActivityTypeAssignToContact,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAddToReadingList,
UIActivityTypeSaveToCameraRoll];
NSMutableArray *items = [[[Engine sharedEngine].thingsManager getSharingMessageForThingWithId:self.thingId
categoryName:self.category.name
brandName:self.brand.name
andText:message
isVideo:([self.videoURL.absoluteString length] > 0 ? YES : NO)] mutableCopy];
if ([self.videoURL.absoluteString length] > 0) {
//Get the .mp4 converted video url
if (self.awsManager == nil) {
self.awsManager = [[AWSManager alloc] init];
}
NSURL *mp4Url = [self.awsManager convertVideoToMP4:self.videoURL];
//[items addObject:self.videoAmazonPath];
[items addObject:mp4Url];
} else {
[items addObject:self.image];
}