长按桌面APPIcon图标快捷操作添加功能开发

在支持 3D Touch 的设备上,Quick Actions 可以让用户更快,更少的操作步骤去完成他们最常做的事情,其中这么多操作可以通过主屏幕直接完成。比如用力地长按微信图标,会弹出诸如"扫一扫"和"我的二维码"等常用功能,这个我在加好友的情况下经常会用到,不是"扫"别人就是被别人"扫"。然后这是它的官方介绍,3D Touch - iOS - Apple Developer。

支持的设备是在 iPhone 6S 和 6S Plus 及后续出的 iPhone 系列,系统则是从 iOS 9.0 开始支持 3D Touch。

Info.plist 创建快捷方式

快捷方式支持在 Info.plist 里直接定义,主键是UIApplicationShortcutItems,它是一个数组Array。各个 Key 值可以在查看Information Property List Key Reference,在这里简单地介绍一下各个 Key 的作用。

Key 作用
UIApplicationShortcutItemType(必需) 唯一标识
UIApplicationShortcutItemTitle(必需) 显示的标题
UIApplicationShortcutItemSubtitle(可选) 显示的副标题
UIApplicationShortcutItemIconType(可选) 使用系统的图标
UIApplicationShortcutItemIconFile(可选) 使用项目的图标
UIApplicationShortcutItemUserInfo(可选) 附加的信息

以下是一个详细的例子,上述的 Key 除了 UIApplicationShortcutItemUserInfo 外,其它都实现了。

现在我们来看看运行效果,值得一提的是,图标分别在上半屏和下半屏的情况下,显示的排序是会不同的,具体运行效果如下所示。

图标在上半屏

图标在下半屏

判断用户点击了哪个快捷方式

通过在 AppDelegate.m 文件中实现 UIApplicationDelegate 的代理方法

application:performActionForShortcutItem:completionHandler:,可以得知用户是从哪个快捷方式进来的,具体代码如下。

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler API_AVAILABLE(ios(9.0)) {
NSLog(@"%s", __FUNCTION__); if ([shortcutItem.type isEqualToString:@"search"]) {
NSLog(@"用户从快捷方式“搜索”进来的");
} else if ([shortcutItem.type isEqualToString:@"list"]) {
NSLog(@"用户从快捷方式“榜单”进来的");
} else if ([shortcutItem.type isEqualToString:@"public"]) {
NSLog(@"用户从快捷方式“一键发布”进来的");
}
}

代码创建快捷方式

快捷方式也支持代码创建,每一个 UIApplicationShortcutItem 就是一个快捷方式,一般在 AppDelegate.m 文件中实现方法 application:didFinishLaunchingWithOptions: 里编写实现代码,代码比较易懂,这里就不再说明了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%s", __FUNCTION__); if (@available(iOS 9.0, *)) {
UIApplicationShortcutIcon *searchIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch];
UIApplicationShortcutItem *search = [[UIApplicationShortcutItem alloc] initWithType:@"search" localizedTitle:@"搜索" localizedSubtitle:nil icon:searchIcon userInfo:nil]; UIApplicationShortcutIcon *publicIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"upload"];
UIApplicationShortcutItem *public = [[UIApplicationShortcutItem alloc] initWithType:@"public" localizedTitle:@"一键发布" localizedSubtitle:nil icon:publicIcon userInfo:nil]; UIApplicationShortcutItem *list = [[UIApplicationShortcutItem alloc] initWithType:@"list" localizedTitle:@"榜单" localizedSubtitle:@"全区排行" icon:nil userInfo:nil]; application.shortcutItems = @[list, public, search];
} return YES;
}

摘自 https://www.jb51.net/article/162263.htm

iOS开发之桌面快捷方式Quick Actions的更多相关文章

  1. iOS App创建桌面快捷方式

    http://www.cocoachina.com/ios/20150827/13243.html 先mark,暂时用不到

  2. iOS开发 - 3D Touch 应用系列一 - Quick Actions 创建桌面 Icon 快捷方式

    个言 很久没发随笔了,有一年多了吧.期间也曾想继续去写随笔,但是因为各种原因而耽搁了.最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西.之后我也会不断写随笔,但不止于 iOS 的方向 ...

  3. Android开发被添加到桌面快捷方式

    Android开发被添加到桌面快捷方式 对于一个希望拥有很多其它用户的应用来说.用户桌面能够说是全部软件的必争之地,假设用户在手机桌面上建立了该软件的快捷方式.用户将会更频繁地使用该软件. 因此,全部 ...

  4. Android开发之创建桌面快捷方式

    Android创建桌面快捷方式就是在桌面这个应用上创建一个快捷方式,桌面应用:launcher2 通过查看launcher2的清单文件: <!-- Intent received used to ...

  5. 利用ios safari浏览器生成桌面快捷方式并唤醒app的示例代码

    html 内容: //通过a链接唤醒app  <a href="app约定好的scheme" id="qbt" style="display:n ...

  6. iOS:iOS开发非常全的三方库、插件等等

    iOS开发非常全的三方库.插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自git ...

  7. iOS开发--iOS及Mac开源项目和学习资料

    文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecl ...

  8. iOS 开发设计常用软件及工具整理

    1, xCode 2, AppCode 3, Skech 原型设计软件 4, Hype 动画设计工具 5, fontawsome 免费图表 6, Prepo icon, images.catlog 生 ...

  9. iOS 开发人员不可缺少的75个工具

    原文出处: Ben Scheirman 译文出处: Njuxjy 假设你去到一位熟练的木匠的工作室,你总是能发现他/她有一堆工具来完毕不同的任务. 软件开发相同如此. 你能够从软件开发人员怎样使用工具 ...

  10. iOS开发常用第三方库

    UI 动画 网络相关 Model 其他 数据库 缓存处理 PDF 图像浏览及处理 摄像照相视频音频处理 响应式框架 消息相关 版本新API的Demo 代码安全与密码 测试及调试 AppleWatch ...

随机推荐

  1. win32com操作word 第三集:Range精讲(一)

    本课程<win32com操作word API精讲&项目实战>,本公众号以文字分享为主,B站与视频号则发布视频分享,ID均为:一灯编程 本集开始,将会深入Document接口.打开或 ...

  2. 【数据结构和算法】Trie树简介及应用详解

    作者:京东物流 马瑞 1 什么是Trie树 1.1 Trie树的概念 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经 ...

  3. 洛谷 P2629 好消息,坏消息(单调队列)

    题目链接 首先想到的就是暴力前缀和,枚举一个区间每次统计前缀和,前缀和的某一个值为负数时就退出 如何枚举区间? 比如样例: \(4\) \(-3\ 5\ 1\ 2\) 可以使用一种断环为链的操作, 让 ...

  4. FAQ os.system调用失效问题

    os.system调用失效问题 背景 有个学员反馈allure无法生成报告 # 示例代码 import pytest,os def test_os(): pass if __name__ == '__ ...

  5. Vue17 手机表单数据

    1)v-model.trim trim修饰符是去掉前后空格 2)type="number" v-model.number type="number":只能输入数 ...

  6. springcloud12-spring cloud stream

    1.基础说明 官网:https://spring.io/projects/spring-cloud-stream#overview   文档:https://docs.spring.io/spring ...

  7. .net 多地点计算中心点

    1.需求产生 快到周末了,几个远在各个区的朋友想要聚餐,为了照顾到彼此的距离,决定计算一下所有人的中心点,至此需求产生,下面开始编写代码. 2.编写代码 1)新建一个控制台程序 在NuGet程序包管理 ...

  8. SnowFlake 雪花算法详解与实现 & MP中的应用

    BackGround 现在的服务基本是分布式,微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性. 对于 MySQL 而言,一个表中的主键 id 一般使用自 ...

  9. Ansible 快速入门到放弃

    Ansible 快速入门到放弃 最是人间留不住,朱颜辞镜花辞树. 1-Ansible 简介 Ansible是一个配置管理和配置工具,它使用SSH 连接到服务器并运行配置好的任务,服务器上只需要开启ss ...

  10. Vue急速入门-5

    vue-cli创建项目 前端工程化,项目>>>(vue-cli),创建处vue项目,单页面应用(spa) vue-cli创建项目开发,在项目中开发,最后上线,一定要编译 '纯粹的ht ...