2014-10-18 112 views
3

嗨,我正在开发一个社交网络应用程序。因为我需要使用扩展名来分享我的应用程序API。我正在开发我的应用程序目标C而不是斯威夫特。任何机构都可以帮助我解决这个问题。在ios8中使用共享扩展共享图像

+0

你可以说你是如何获得的形象呢? – Yohan 2015-04-23 09:29:34

回答

4

创建目标C一个共享扩展

  1. 应用程序扩展名必须有一个包含应用程序 - 你不能只是建立一个应用程序扩展,从商店下载,首先创建一个普通的应用程序包含了应用扩展程序 为了演示的目的,只需创建一个新的单视图项目并保持原样。 前往文件 - >新建 - >项目并选择单视图应用程序下iOS - >应用程序称之为'ExtendableApp'。

  2. 转到文件 - >新建 - >目标,并选择下的iOS 分享扩展 - >应用程序扩展称之为“myShareExtension”这将份额扩张对象添加到您的项目。

  3. 扩展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

注意,默认行为是为您的扩展出现时所有键申请,这意味着,如果你指定NSExtensionActivationSupportsImageWithMaxCountNSExtensionActivationSupportsMovieWithMaxCount只有在用户共享图像电影不是图像或电影时,您的扩展才会显示。 要写入出现了几个共享数据类型中的任何一个延伸看看这里

http://bryan.io/post/97658826431/what-we-learned-building-the-tumblr-ios-share-extension

Declaring Supported Data Types for a Share or Action Extension

+1

我得到了图像和所有。现在我需要在后台分享图片。你能提供任何代码吗? – TamilKing 2014-11-18 10:53:33

+0

我不明白,从你的问题看,你似乎正在开发一个共享扩展,所以你为什么要分享一个已经与你共享的图像? 无论上下文如何,使用共享扩展的唯一方法是通过UIActivityViewController,它需要呈现此控制器,因此无法在后台完成。 – MichaelB 2014-11-19 05:55:48

+0

我添加所有的东西,也分享..有些时候它不共享..我需要调用两个API来上传图像。我希望在后台会话中处理错误。 – TamilKing 2014-11-19 11:37:16