IOS开发 ShareExtension

自iOS8开始,苹果支持应用扩展,这里说下ShareExtension

一、环境配置篇

1、用XCode打开要添加扩展的工程,点击File ->New Target   -> Application Extension -> Share Extension

完成后会看到多了一个扩展文件夹

2、共享沙盒,开启App Groups。


分别在原target和extension下开启AppGroups,选中同一个group。

注意:在开发者中心的该appid下编辑一下,勾选同一个组,保证统一。

通过AppGroups 的建立,就可以共享同一个沙盒的数据。

3、共享沙盒数据的存取

   存:

              NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.xxxxx"];

              [shared setObject:@"value"  forKey:@"key"];

              [shared synchronize];

   取:

               NSUserDefaults *shared = [[NSUserDefaults alloc] initWithSuiteName:@"group.xxxxx"];

               NSString *value = [shared objectForKey:@"key"];

二、界面交互篇

1、至上一步,打开浏览器,点击分享图标就可以看到自己的应用,点击后出现下面界面   

                                                           

2、获取到链接和文字

              文字:  NSString  *textStr = self.contentText;

              链接比较复杂:

     NSExtensionItem * imageItem = [self.extensionContext.inputItems firstObject];

      NSItemProvider * imageItemProvider = [[imageItem attachments] firstObject];

    if([imageItemProvider hasItemConformingToTypeIdentifier:(NSString*)kUTTypeURL])

    {        

        [imageItemProvider loadItemForTypeIdentifier:(NSString*)kUTTypeURL options:nil completionHandler:^(NSURL* imageUrl, NSError *error) {

            //在这儿做自己的工作

            NSString* urlString = imageUrl.absoluteString;

        }];

    }

3、点击发送键将会调用方法 

 - (void)didSelectPost {

     [self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];

  }

        4、自定义界面的思路,把默认的界面隐藏掉,然后在viewDidLoad中添加自定义的界面。隐藏的方法:

- (void)viewDidLoad{

    UIView *sup = self.textView.superview;

    sup.hidden = YES;

}

三、重要重要重要

1、在实际开发中,要进行处理免不了要使用AFNetWorking库。直接包含引用会变异错误,原因在于ShareExtension中不存在UIApplication。而在AFNetWorking中是用到这个的。不过AFNetWorking自身有考虑到这方面,只需在预编译文件PrefixHeader.pch中添加代码:

#define AF_APP_EXTENSION

但是xcode6之后这个文件是没有的,需要自己添加:新建pch文件,在Build Setting 中搜索pch 在Prefix Header 中进行关联

$(SRCROOT)/Extension/PrefixHeader.pch

2、针对变异报错的问题还有一个 x86

方法:在extension 的target中的Build Phases的Complile Sources中添加报错的.m文件





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值