美文网首页iOS技术交流收藏技术类iOS开发
3D Touch 的实现和系统分享功能

3D Touch 的实现和系统分享功能

作者: 航彪彪 | 来源:发表于2016-10-11 19:34 被阅读2263次

3D Touch其实就是快速进入指定app界面的一种方式。
下面和大家分享一下简单的实现
1、静态标签
静态标签是我们在项目的配置plist文件中配置的标签,在用户安装程序后就可以使用,并且排序会在动态标签的前面。
我们先来看静态标签的配置:
首先,在info.plist文件中添加如下键值(我在测试的时候,系统并没有提示,只能手打上去):

Paste_Image.png

先添加了一个UIApplicationShortcutItems的数组,这个数组中添加的元素就是对应的静态标签,在每个标签中我们需要添加一些设置的键值:
必填项(下面两个键值是必须设置的):
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
我们如上截图设置后,运行程序,用我们前面的方法进行测试,效果如下:

Paste_Image.png

2、动态标签
动态标签是我们在程序中,通过代码添加的,与之相关的类,主要有三个:
UIApplicationShortcutItem 创建3DTouch标签的类
UIMutableApplicationShortcutItem 创建可变的3DTouch标签的类
UIApplicationShortcutIcon 创建标签中图片Icon的类
在AppDelegate.m文件中


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
CGFloat currentDeviceVersionFloat = [[[UIDevice currentDevice] systemVersion] floatValue];
//判断版本号,3D Touch是从iOS9.0后开始使用
    if (currentDeviceVersionFloat >= 9.0) {
        UIApplicationShortcutIcon *iconFitness = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片1"];
        //菜单文字
        UIMutableApplicationShortcutItem *itemFitness = [[UIMutableApplicationShortcutItem alloc] initWithType:@"1" localizedTitle:@"标题一"];
        //绑定信息到指定菜单
        itemFitness.icon = iconFitness;
        
        // 菜单图标
        UIApplicationShortcutIcon *iconRun = [UIApplicationShortcutIcon iconWithTemplateImageName:@"图片二"];
        //菜单文字
        UIMutableApplicationShortcutItem *itemRun = [[UIMutableApplicationShortcutItem alloc] initWithType:@"2" localizedTitle:@"标题二"];
        //绑定信息到指定菜单
        itemRun.icon = iconRun;
        //绑定到App icon
        application.shortcutItems = @[itemFitness,itemRun];
    }
}

响应事件如下

- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
    if ([shortcutItem.type isEqualToString:@"1"]) {
//如果有导航栏参考下面注释部分
    UINavigationController *myNavi = self.window.rootViewController.childViewControllers[0];
//        _tabBar.selectedIndex = 0;
       UIViewController * picker1 = [[UIViewController alloc]init];//进入窗口的初始化
//利用NSUserDefaults 的标识,来防止重复初始化VC
    //    if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d"]) {
     //       [myNavi popViewControllerAnimated:NO];
      //      [myNavi pushViewController:_picker1 animated:YES ];
    //    }else{
         [myNavi pushViewController:picker1 animated:YES ];
        
    //    }
        
    }
    if ([shortcutItem.type isEqualToString:@"2"]) {
    / /   UINavigationController *myNavi = self.window.rootViewController.childViewControllers[1];
    //    _tabBar.selectedIndex = 1;
       UIViewController *vc = [[UIViewController1 alloc]init];//进入窗口的初始化
   //     if ([[NSUserDefaults standardUserDefaults]boolForKey:@"3d1"]) {
     //       [myNavi popViewControllerAnimated:NO];
      //      [myNavi pushViewController:_LJHVC animated:YES ];
    //    }else{
            
        [myNavi pushViewController:vc animated:YES ];
        
    //    }
        
    }
   
    
}

如果你在为系统“分享”犯愁的话,我可以悄悄的告诉你,这个是上架后系统自带的系统分享功能(我搞了一天多0.0)

相关文章

  • 3D Touch 的实现和系统分享功能

    3D Touch其实就是快速进入指定app界面的一种方式。下面和大家分享一下简单的实现1、静态标签静态标签是我们在...

  • 关于3D Touch 的基本使用

    我对于3d touch 这个功能也没有什么研究,只是项目里面要求实现一个简单的touch 功能! touch AP...

  • 3D Touch

    iOS之实现3D Touch跟着官方文档学习3D Touch

  • 3D Touch 具体使用

    实现参考3D Touch例子

  • 3D Touch功能实现

    3D Touch 3D Touch的触控技术,被苹果称为新一代多点触控技术。其实,就是此前在Apple Watch...

  • 3D Touch相关 - iOS 9

    简介 iPhone 6s开始添加压力传感器和Taptic Engine线性震动器实现了 3D Touch功能(iP...

  • ios之3D Touch开发指南

    ios9中3D Touch功能是一个新的亮点,这个方便快捷的功能实现也比较简单,废话不多说直接上代码, 一.3D ...

  • iOS 3D Touch系统级别的分享功能

    只做记录:不进入应用的3D Touch系统分享功能不需要我们操作,应用上架之后会自动加上的。默认调试的时候是不会出...

  • ios实现3D touch 和widget功能

    3D touch 1.1 info.plist静态配置 UIApplicationShortcutItems:数组...

  • ios 3D Touch运用

    概述:iOS9中引入3D Touch功能,iOS10中对其使用需求更频繁,,所以对3D Touch功能做一些了解是...

网友评论

  • brance:我已经弹出了分享按钮,但是点击分享之后为啥没弹出分享菜单,而是直接进入应用了~
    brance:@Superman168 好滴 谢谢耐心解答
    Superman168:测试的会这样,App Store上线的版本,默认就会有分享,不用管,今天还研究了几个几个小时,回过头一看自己的APP本来就有,开始装的都是测试的:pensive:
    Superman168:以前没注意这个功能,今天才看一下,跟你一样的
  • 薛定谔的黑猫警长:如果你在为系统“分享”犯愁的话,我可以悄悄的告诉你,这个是上架后系统自带的系统分享功能(我搞了一天多0.0)
    这句话说的真好
    NieFeng1024:@薛定谔的黑猫警长 多谢警长,哈哈
    薛定谔的黑猫警长:@_550872569 不知道有没有,但是你会你没有设置分享,上架后就多了一个分享
    NieFeng1024:关于 “分享居然是系统自带的” 可有官方文档考证?哈哈
  • 行走的栀子花:哈哈 我说我怎么找来找去找不到
  • 元昊:意思是没有配置item应用上线了没有,配置其他的item后分享在上线后自动添加?
  • ChangeWorld:好无语啊,分享居然是系统自带的,,,,也是找了半天:joy:
    NieFeng1024:@席列2 关于 “分享居然是系统自带的” 可有官方文档考证?哈哈
    NieFeng1024:可有官方文档考证?哈哈
    席列2:哈哈,也是找了一会
  • 魔灵宝贝:现在遇到一个问题 :启动app才可以分享。如果不唤醒app 分享的是如何做到的
    Ray_Wei:你解决了吗?我也遇到这个问题!:sweat:
  • 秘制鸭腿:你的意思的每个app的分享"xx"是上架后就会有的? 我找了半天
    航彪彪:@秘制鸭腿 嗯嗯
    秘制鸭腿:@航彪彪 这样啊,我也和你一样,找了半天,还想着怎么实现呢,那我现在就添加四个功能就好啦? 分享上线后自动加的是吧
    航彪彪:@秘制鸭腿 你会发现现在的app都有一个系统的分享,可以试试

本文标题:3D Touch 的实现和系统分享功能

本文链接:https://www.haomeiwen.com/subject/daubyttx.html