我正在使用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 …
我正在开发应用程序的一部分,以便当您点按分享按钮时,它可以让您立即分享您的高分榜的屏幕截图以及消息.我无法制作/分享屏幕截图,当我点击分享按钮时,应用程序只允许我复制我的默认文本或"邮件"我的默认文本,不允许我发布到Facebook,Twitter,消息, 和更多.
func shareButtonPress() {
var postPhrase = "Just hit \(highscore)! Beat it! #SwypIt"
//Generate the screenshot
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
var image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
var postImage = UIImage(named: "\(image)")
var activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [postPhrase, postImage!], applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
解决这个问题的最佳方式是什么?谢谢!
敌人设定共享主题,压倒一切
func activityViewController(activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String {
return "mySubject"
}
Run Code Online (Sandbox Code Playgroud)
分享时,不适用于Outlook应用程序.此方法不适用于outlook,适用于其他应用程序,如邮件,Gmail等.
发现一些应用程序像Yelp,Apple地图,谷歌地图能够在outlook中设置主题.如何实现它?
创建了新项目并添加了ActionExtension它工作并在Action Activities中显示但是当我为现有应用程序(包含swift和Objective-c文件的旧应用程序)创建时,Action Extension不显示在Device中我需要在Action Extension中显示我的应用程序UiactivityController但我无法在Device参考图像中显示For Every Application

***查询:在模拟器(照片应用程序)中显示它并且它在模拟器中的其他应用程序中不显示但是当我在设备中运行时它不会在照片应用程序和其他应用程序中显示
override func viewDidLoad() {
super.viewDidLoad()
// Get the item[s] we're handling from the extension context.
// For example, look for an image and place it into an image view.
// Replace this with something appropriate for the type[s] your extension supports.
var imageFound = false
for item: AnyObject in self.extensionContext!.inputItems {
let inputItem = item as! NSExtensionItem
for provider: AnyObject in inputItem.attachments! {
let itemProvider = provider as! NSItemProvider
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeImage as String) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用requestAVAsset 通过UIActivityController共享视频PHAsset.这适用于Messaging,但不适用于AirDrop,表示为"失败".
PHCachingImageManager.default().requestAVAsset(forVideo: asset, options: nil, resultHandler:
{ (givenAsset, audioMix, info) in
let videoAsset = givenAsset as! AVURLAsset
let videoURL = videoAsset.url
DispatchQueue.main.async {
let activityViewController = UIActivityViewController(
activityItems: [videoURL],
applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.saveToCameraRoll]
if let popoverPresentationController = activityViewController.popoverPresentationController {
popoverPresentationController.barButtonItem = (sender)
}
self.present(activityViewController, animated: true, completion: nil)
}
})
Run Code Online (Sandbox Code Playgroud)
这似乎适当地提出了UIActivityController并且只适用于某些活动:
我正在UIActivityViewController不同的社交媒体上分享图片,视频和LivePhoto .
但是当我在WhatsApp上分享LivePhoto时,会发生以下情况:
ActivityViewController完成处理程序打印错误时,它打印如下:[core] SLComposeViewController remoteViewController:didTerminateWithError:Error Domain = _UIViewServiceInterfaceErrorDomain Code = 3"(null)"UserInfo = {Message = Service Connection Interrupted} [core] SLComposeViewController completeWithResult:0 [core] SLComposeViewController跳过显式dismiss,因为isBeingDismissed已经是1 SLComposeViewController dealloc
I have tried with this code :
PHImageManager.default().requestImageData(for: selectedAsset, options: nil, resultHandler: { (imgData, str, image, info) in
activityItems.append(imgData!)
let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
activityViewController.completionWithItemsHandler = {(activityType: UIActivityType?, completed: Bool, returnedItems:[Any]?, …Run Code Online (Sandbox Code Playgroud) objective-c ios uiactivityviewcontroller swift3 apple-live-photos
在我的应用程序中,我添加了我的共享扩展程序,它工作正常,但我面临一个问题当我通过邀请应用程序时,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) ios ×7
swift ×6
objective-c ×2
swift3 ×2
avfoundation ×1
ios8 ×1
phasset ×1
screenshot ×1
share ×1
swift2 ×1
video ×1
whatsapp ×1
xcode6 ×1