美文网首页
3DTouch开发

3DTouch开发

作者: 云逸致 | 来源:发表于2018-08-03 11:30 被阅读30次

一、 写在前面

最近工作中遇到了3DTouch的开发,从网上查了一下资料,很轻易的就搞定了。3DTouch的开发并不难,而且网上有大把的资料。自己重新写一遍开发流程,显得有点多余。经过一番纠结以后,还是决定写下来。当做是知识的巩固。本文所讲的3DTouch主要是Home Screen Quick Actions(指快捷选项标签)的开发。

二、Home Screen Quick Actions

添加Home Screen Quick Actions有两种方式:
1.通过Plist文件静态设置;(推荐)
2.通过代码动态添加。(不推荐)
两种方法的区别在于:通过Plist设置无需运行程序,也就是说在下载App后,不需要打开应用,就可以即可唤出Home Screen Quick Actions;而通过代码动态添加的,必须在第一次下载后打开App,才能出现Home Screen Quick Actions。

通过Plist文件静态设置

在应用的 Info.plist 文件中添加UIApplicationShortcutItems数组。
数组中添加字典,如下图所示:


WechatIMG1.jpeg

其中,字典的Key有以下选项:

名称 说明 是否必填
UIApplicationShortcutItemTitle 标签的标题 必填
UIApplicationShortcutItemType 标签的唯一标识 必填
UIApplicationShortcutItemIconType 使用系统图标的类型,如搜索、定位、home等 可选
UIApplicationShortcutItemIconFile 使用项目中的图片作为标签图标 可选
UIApplicationShortcutItemSubtitle 标签副标题 可选
UIApplicationShortcutItemUserInfo 字典信息,如传值使用 可选

通过动态代码创建

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  //创建快捷item的icon UIApplicationShortcutItemIconFile
    UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"3DTouch_icon1.png"];
    UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"3DTouch_icon2.png"];
    
    //创建快捷item的userinfo UIApplicationShortcutItemUserInfo
    NSDictionary *info1 = @{@"url":@"openmobile"};
    NSDictionary *info2 = @{@"url":@"mobilerech"};
    //创建ShortcutItem
    UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"XS_3DTocuh_1" localizedTitle:@"按钮1" localizedSubtitle:nil icon:icon1 userInfo:info1];
    UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"XS_3DTocuh_2" localizedTitle:@"按钮2" localizedSubtitle:nil icon:icon2 userInfo:info2];
    NSArray *items = @[item1, item2];
    [UIApplication sharedApplication].shortcutItems = items;
}

三. 逻辑处理

  1. 目前Home Screen Quick Actions最多只能添加4个。
    无论用哪种方式添加,当点击item后,都会调用以下方法:
- (void)application:(UIApplication *)application performActionForShortcutItem:(nonnull UIApplicationShortcutItem *)shortcutItem completionHandler:(nonnull void (^)(BOOL))completionHandler{
//通过type来判断点击的是哪个item
  if ([item.type isEqualToString:@"XS_3DTocuh_1"]) {
       
            } 

}

2.特别注意 :如果是通过plist文件静态设置 的,当进程杀死以后,再通过3Dtouch进入程序,系统并不会走上面的方法。有些逻辑可能就无法实现,可以在APPDelegate中判断程序是否是通过3Dtouch启动的,然后做一些相关的逻辑处理,具体代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        NSDictionary *shortCut = [launchOptions objectForKey:@"UIApplicationLaunchOptionsShortcutItemKey"];
if ([shortCut isKindOfClass:[UIApplicationShortcutItem class]]){
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"3DTouch"] ;
        }
}

相关文章

  • Swift开发之3DTouch实用演练

    Swift开发之3DTouch实用演练 Swift开发之3DTouch实用演练

  • iOS 3DTouch开发

    点击下方链接直达 ↓ ↓ ↓ 3DTouch开发详解及Demo

  • 3DTouch开发

    一、 写在前面 最近工作中遇到了3DTouch的开发,从网上查了一下资料,很轻易的就搞定了。3DTouch的开发并...

  • 3DTouch开发

    3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在Apple Watch上采用的Force T...

  • 3DTouch 开发

    http://www.open-open.com/lib/view/open1452856776230.html

  • iOS开发中添加3DTouch功能

    iOS开发中添加3DTouch功能 在AppDelegate入口类的入口方法- (BOOL)application...

  • iOS 给App添加3DTouch功能

    给App添加3DTouch的多个Item 给某个页面添加3DTouch 3DTouch添加页面 预览页面

  • iOS开发-3DTouch

    3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在Apple Watch上采用的Force T...

  • iOS 3DTouch 开发

    概述 iOS10系统登录中国,在系统中对3D Touch的使用需求更频繁,所以对iOS9中便引入的3D Touch...

  • iOS APP开发添加3D Touch

    本文就iOS开发中如何集成3DTouch做下简单的讲解。 开发环境及调试设备:Xcode7或以上,iOS9或以上,...

网友评论

      本文标题:3DTouch开发

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