iOS APP Extension - Share

iOS APP Extension - Share_第1张图片
APP Extension
iOS APP Extension - Share_第2张图片
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;
}

iOS APP Extension - Share_第3张图片
最新iPhone

你可能感兴趣的:(iOS APP Extension - Share)