iOS APP Extension – Share

释放双眼,带上耳机,听听看~!
APP Extension

APP Extension

今天主要说下 Share Extension 网上有很多教程,自个也亲自实现了一次!

一 、Extension的种类

我们可以在Xcode的File—>New—>Target里面看到不同平台的Extension,包括iOS、watchOS、tvOS、macOS等等。这里主要介绍iOS,主要包括以下几种Extensions:

1.Action Extension:动作扩展,在另一个应用程序的上下文中操作或者查看内容

2.Audio Unit Extension:音频单元扩展

3.Broadcast UI Extension:广播UI 扩展

4.Broadcast Upload Extension:广播上传扩展

5.Call Directory Extension:呼叫目录扩展

6.Content Blocker Extension:内容拦截器扩展

7.Custom Keyboard Extension:键盘扩展,例如第三方的键盘,搜狗输入法,百度输入法等。

8.iMessage Extension:消息的扩展

9.Intents Extension:Intents扩展

10.Intents UI Extension:Intents UI扩展

11.Notification Content Extension:通知内容扩展

12.Notification Service Extension:通知服务扩展

13.Photo Editing Extension:图片编辑扩展,在照片app中编辑照片或者视频

14.Share Extension:分享扩展,发布一个共享网站或者与其他应用共享内容。

15.Shared Links Extension:分享链接扩展

16.Spotlight Index Extension:Spotlight 索引扩展

17.Sticker Pack Extension:贴纸包扩展

18.Today Extension:Today扩展,可以快速获取更新或者在通知中心的近日视图中执行一项快速任务。

等等。也可直接在苹果官方文档参见更多extension。

可能用到的技术:
将App添加到系统分享列相册和截图
在系统分享列表中加入自己的应用-此方法仅限于分享文件
分享1
分享2
分享3
分享4
分享5

总有一篇适合你看懂的

  • 上架注意:分享的扩展里不可有延时操作,版本号和主工程保持一致,证书group记着上线看看打开可用状态,不可单独上线。

二 、你可能使用到的技术

给你的iOS应用注册url scheme(就是别的APP可以跳转到你的APP的一个接口)

如何注册?

每个应用都有一个或多个plist文件,即info.plist,在这个苹果自带配置文件中增加相关key-value。

  • 第一步:添加URL types
  • 第二步:展开URL types,第1个元素(即item 0)下方添加URL Schemes
  • 第三步:展开URL Schemes,第1个元素(即item 0)修改value为自定义的字符串,例如test

测试:

1.打开手机Safari,输入test://

2.Safari提示,点击“打开”,ok!

3.如果应用处于调试状态,可以断点在AppDegate中的application:openURL:options:方法里,可以拿到对应的url。对于使用基于url scheme页面导航框架的应用来说,hi可以做很多其他有意思的事。

  • APP之间跳转
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]]){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}

可能用到链接

三、iOS 获取当前屏幕显示的viewcontroller

此功能用于跳转(分享的时候 跳转到自个APP 然后获取当前VC 然后就可以推出到任何VC进行分享 之后且返回当前VC 前提APP在登录情况下)

//获取当前屏幕显示的viewcontroller
- (UIViewController *)getCurrentVC
{
UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
UIViewController *currentVC = [self getCurrentVCFrom:rootViewController];
return currentVC;
}
- (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC
{
UIViewController *currentVC;
if ([rootVC presentedViewController]) {
// 视图是被presented出来的
rootVC = [rootVC presentedViewController];
}
if ([rootVC isKindOfClass:[UITabBarController class]]) {
// 根视图为UITabBarController
currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]];
} else if ([rootVC isKindOfClass:[UINavigationController class]]){
// 根视图为UINavigationController
currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]];
} else {
// 根视图为非导航类
currentVC = rootVC;
}
return currentVC;
}

最新iPhone

人已赞赏
iOS文章

iOS 百度地图截屏

2020-1-26 10:11:50

iOS文章

iOS开发防止数组越界及添加空值的crash的扩展

2020-1-26 10:52:33

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索