ios开发之分享应用拓展share extension一

本文介绍如何在iOS中实现自定义分享功能,包括创建分享应用拓展、配置info.plist以支持图片、视频和网页链接的分享,并通过特定URL scheme将分享操作与主体应用连接起来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能:在翻看图片和网页的时候,想要把这些东西分享给通讯app的好友。

实现这个功能之前,在各种网页上寻找过各种方法,可是网上的文献不多并且不怎么具体,废话不多说,马上来总结一下我是怎么学习的。

1.首先建立一个分享应用拓展

File->New->Target

看到了IOS下的Application Extension->Share Extension

这里其实就建立了一个相对独立的工程,里面有一份cocoa class 一个storyboard还有一个info.plist文件

(这里给几个定义,新建了Share Extension后,这里其实是一个独立的app,我们称为host app,

用来管理extension,然后我们的通讯app,就是主体应用,我门称为contrain app)

2.进入share view controller 

先到h文件去看,我们可以看到这个viewcontroller继承了一个叫SLComposeServiceViewController的类

按住command点击SLComposeServiceViewController,可以看到除了一般viewcontroller的方法外,有几个不一样的方法。

- (void)didSelectPost;按下post键处理事件

- (void)didSelectCancel;按下cancel键处理事件

- (BOOL)isContentValid;文本改变时处理事件(一般用作文本字数的限制)

- (NSArray *)configurationItems;这里可以给post界面添加items可以给分享的事件多样选择

- (void)pushConfigurationViewController:(UIViewController *)viewController;这里的push只能给host app中vc的跳转,对于我们功能的实现,用处不大。

self.textView为文本。

3.info.plist

介绍一下info.plist

这里我们可以看到NSExtension

展开后看到NSExtensionActivationRule

NSExtensionActivationSupportsImageWithMaxCount这个是允许共享图片,value自然就是int类型的个数(允许分享的个数)

NSExtensionActivationSupportsMovieWithMaxCount这个自然就是影片

NSExtensionActivationSupportsWebURLWithMaxCount这个是网络连接

修改info.plist的相关属性,我们就可以修改成为满足我们需求的share extension

4.把host app和 contrain app连接起来

这一步就尤为重要了,我们想要把图片分享给我们想分享的好友用户,就要进入contrain app的选取用户的界面,那么我们怎么打开contrain app呢?

我们找到了以下办法:

NSString *className = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x55, 0x49, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E} length:13] encoding:NSASCIIStringEncoding];
NSURL *urls=[NSURL URLWithString:@"test://"];
if (NSClassFromString(className)){
   id object = [NSClassFromString(className) performSelector:@selector(sharedApplication)];
   [object performSelector:@selector(openURL:) withObject:urls];
   }
一般的open url并不能正常地打开contrain app

这里要给contrain app添加url属性,打开contrain app的info.plist。

添加一个key,右键按add row ,选取URL types,在item 0分别添加URL Schemes和URL identifier

给URL identifier添加身份,然后再URL Schemes中item 0改value为test。(test为你想要给他起的url名字)

到了这一步,我们就可以把host app和contrain app连接起来,在分享的时候回到自己的主体app,实现选取用户并进行分享。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值