嗨,我正在开发一个社交网络应用程序。因为我需要使用扩展名来分享我的应用程序API。我正在开发我的应用程序目标C而不是斯威夫特。任何机构都可以帮助我解决这个问题。在ios8中使用共享扩展共享图像
回答
创建目标C一个共享扩展
应用程序扩展名必须有一个包含应用程序 - 你不能只是建立一个应用程序扩展,从商店下载,首先创建一个普通的应用程序包含了应用扩展程序 为了演示的目的,只需创建一个新的单视图项目并保持原样。 前往文件 - >新建 - >项目并选择单视图应用程序在下iOS - >应用程序称之为'ExtendableApp'。
转到文件 - >新建 - >目标,并选择下的iOS 分享扩展 - >应用程序扩展称之为“myShareExtension”这将份额扩张对象添加到您的项目。
扩展ShareViewController继承自SLComposeServiceViewController,它已经有一个带有文本框,图像视图和'取消'和'发布'按钮以及像字符数,配置,内容验证等其他功能的视图。
如果你想创建自定义体验,只需将你的ShareViewController设置为从UIViewController继承,一旦你的扩展被激活,所有常规的viewDidLoad,viewDidAppear等都会被调用。
在安装您的应用程序包含你将已经能看到“myShareExtension”在UIActivityViewController菜单
获取共享的UIImage
在你ShareViewController.mm在viewDidAppear使用下面这后一点以获取图像
-(void)viewDidAppear:(BOOL)animated
{
for (NSItemProvider* itemProvider in ((NSExtensionItem*)self.extensionContext.inputItems[0]).attachments)
{
if([itemProvider hasItemConformingToTypeIdentifier:@"public.image"])
{
[itemProvider loadItemForTypeIdentifier:@"public.image" options:nil completionHandler:
^(id<NSSecureCoding> item, NSError *error)
{
UIImage *sharedImage = nil;
if([(NSObject*)item isKindOfClass:[NSURL class]])
{
sharedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:(NSURL*)item]];
}
if([(NSObject*)item isKindOfClass:[UIImage class]])
{
sharedImage = (UIImage*)item;
}
}];
}
}
}
注意 - 此代码是仅适用于恶魔扩展应该是快速和轻量级的,并且在加载图像时不会阻塞UI线程,在实际应用中,您可以在后台执行此操作。
指定在内线显示了
默认扩展现在将显示,每当出现UIActivityViewController菜单中,可以指定其中的场景扩展应该出现在你需要在扩展信息来设置适当的值。NSExtension,NSExtensionAttributes,NSExtensionActivationRule 下的plist您可以找到可用密钥的decumentation这里: Information Property List Key Reference
注意,默认行为是为您的扩展出现时所有键申请,这意味着,如果你指定NSExtensionActivationSupportsImageWithMaxCount
和NSExtensionActivationSupportsMovieWithMaxCount
只有在用户共享图像和电影不是图像或电影时,您的扩展才会显示。 要写入出现了几个共享数据类型中的任何一个延伸看看这里
http://bryan.io/post/97658826431/what-we-learned-building-the-tumblr-ios-share-extension
Declaring Supported Data Types for a Share or Action Extension
我得到了图像和所有。现在我需要在后台分享图片。你能提供任何代码吗? – TamilKing 2014-11-18 10:53:33
我不明白,从你的问题看,你似乎正在开发一个共享扩展,所以你为什么要分享一个已经与你共享的图像? 无论上下文如何,使用共享扩展的唯一方法是通过UIActivityViewController,它需要呈现此控制器,因此无法在后台完成。 – MichaelB 2014-11-19 05:55:48
我添加所有的东西,也分享..有些时候它不共享..我需要调用两个API来上传图像。我希望在后台会话中处理错误。 – TamilKing 2014-11-19 11:37:16
- 1. 如何调试ios8共享扩展?
- 2. 如何在iOS8中自定义共享扩展视图
- 3. 共享UserDefaults扩展
- 4. 从共享扩展
- 5. 如何在共享扩展的帮助下共享图像完整数据?
- 6. 如何在iOS8共享扩展中获取视频属性
- 7. 共享分享类和数据库共享扩展
- 8. excel共享公式扩展
- 9. Firefox扩展:共享状态
- 10. iOS共享扩展通知
- 11. NSURLSession从MacOS共享扩展
- 12. 使用parse.com共享图像
- 13. 确定使用哪个共享扩展
- 14. 如何在IOS8中使用共享扩展时获取源应用的bundleId
- 15. 在共享扩展中上传图像导致NSURLErrorDomain代码= -997
- 16. Twitter图像共享
- 17. iOS中的共享扩展和Safari中的图像
- 18. Android中的建筑共享扩展
- 19. 在twitter上使用php共享图像
- 20. iOS自定义共享扩展程序:加载所选图像
- 21. 无法通过共享扩展名打开/阅读图像
- 22. 获取iOS共享/操作扩展仅显示单个图像
- 23. iOS - Swift 3共享扩展预览图像
- 24. 使用Java在扩展类中不共享的变量
- 25. iOS共享扩展程序流程
- 26. iOS 8共享扩展附件 - Xcode - Swift
- 27. iOS共享扩展不会终止
- 28. 如何与扩展共享CoreML模型?
- 29. Google plus登录xcode共享扩展
- 30. iOS共享扩展,操纵网页
你可以说你是如何获得的形象呢? – Yohan 2015-04-23 09:29:34