本文主要讲解3DTouch各种场景下的集成,开发主屏幕应用icon上的快捷选项标签(Home Screen Quick Actions),静态设置 UIApplicationShortcutItem ,动态添加、修改UIApplicationShortcutItem,如有需要,也可以联系作者QQ群 139852091

一、准备

3DTouch 是iOS9时出来的,需要硬件配合,也就是说只有iPhone 6s 或者更晚的手机才支持的功能,所以我们集成测试3DTouch的时候要准备iPhone 6s 或者更晚的手机一部,但是我穷啊,还在用最初的iPhone 5s 到网上搜索一下,牛人就是多,github上早就有人为我们提供了这样的一个插件,可以让我们在模拟器上进行3D Touch的效果测试,(如果有土豪朋友,可以直接跳过本项,直接看二、应用添加快捷菜单)

https://github.com/DeskConnect/SBShortcutMenuSimulator

安装和使用git主页里介绍的很清楚,但是考虑到英文水平差的同学,我们重新操作一遍

打开终端  依次输入以下命令

git clone https://github.com/DeskConnect/SBShortcutMenuSimulator.git

cd SBShortcutMenuSimulator

make

xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib

xcrun simctl spawn booted launchctl stop com.apple.SpringBoard

好现在已经安装完成,测试一下是否安装成功

echo 'com.apple.mobilecal' | nc 127.0.0.1 8000

通过上面这个代码,我们打开的是日历程序的3DTouch功能

而上面的  com.apple.mobilecal 是一个 Bundle_Id,如果测试自己的程序,修改成自己的Bundle_Id 即可 测试完不要关闭终端,等下次使用

#pragma warning

#pragma warning

#pragma warning

重点注意的是本插件只能在xcode模拟器iOS9.1使用,如果没有iOS 9.1的模拟器可以进QQ群 139852091 群文件获取(不好意思,打了一广告)

准备工作就绪

二、应用添加快捷菜单

接下来就是代码篇了

1、静态添加

什么是 静态添加 呢?

静态添加我的理解为 程序没有启动过 就添加

可能有同学问,代码都是一步一步走的,怎么做到没有启动就能添加呢,其实道理很简单,我们每个人都有一个名字,比如说我叫 “齐广东”,这个名字是我在娘胎里我父母就给我起好的,我们的APP也是一样,静态添加就像我们给APP起名字一样,直接编辑配置文件 info.plist 就可以 添加的key为UIApplicationShortcutItems,类型为NSArray  好吧我还是贴图片吧

plistText形势

Xcode_plist形势

<array> <dict> <key>UIApplicationShortcutItemTitle</key> <string>第一个按钮所以我是老大</string> <key>UIApplicationShortcutItemType</key> <string>com.mycompany.myapp.one</string> </dict> <dict> <key>UIApplicationShortcutItemTitle</key> <string>我是第二个按钮我就是老二呗</string> <key>UIApplicationShortcutItemType</key> <string>com.mycompany.myapp.search</string> <key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeSearch</string> <key>UIApplicationShortcutItemSubtitle</key> <string>我是副标题我是第二个按钮的小弟</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>key1</key> <string>value1</string> </dict> </dict> </array>

配置好以上,在AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

中添加代码如图

 

在AppDelegate

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

中添加代码如图

 

(有想考代码的同学可以下载GitHub - zhanglinfeng/Demo3DTouch,来源iOS9新特性 3DTouch 开发教程全解(含源码) - 张林峰 - 博客园

这时我们就完成静态添加

有iPhone 6s或者更晚的手机,运行或者安装后即可使用,没有的把模拟器返回到桌面(comd+h)点出刚没有关闭的终端,输入命令

echo ' 你当前程序的 Bundle_Id' | nc 127.0.0.1 8000

这时候就会弹出刚才所添加的,我们盗张图看一下

 

弹出标示成功,这样,静态添加就完成了

2、动态添加

什么是 动态添加  呢?

静态添加我的理解为 程序运行通过代码编译 添加 也就是 代码方式写入

道理就像我叫“齐广东”,而我老婆喜欢叫我东东,这个名字是我出生后他给我起的(不是虐狗,举个例子而已/*其实可以不用这个例子的哈*/)

屁话说多了  直接上代码图片吧

 

配合静态添加的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

的两个方法也完成了动态添加

在 iOS9新特性 3DTouch 开发教程全解(含源码) - 张林峰 - 博客园  的博客中,注意事项已经讲得很清楚,我也不多废话,

我把代码进行简单封装一下,减少一些耦合性,放在了QQ群 139852091 的群文件中,需要的同学可以进群下载

如上文所述有什么不符的地方,欢迎大家支出,我们一起学习,一起成长

参考 :iOS9新特性 3DTouch 开发教程全解(含源码) - 张林峰 - 博客园

资源 :github.com/DeskConnect/SBShortcutMenuSimulator

链接:http://www.jianshu.com/p/bee70b729343  感谢分享

模拟器集成3DTouch-b的更多相关文章

  1. 将报表移动端集成到自有移动端app方法【IOS、Android】

    应用场景 用户有自己的app,希望把报表的移动端[本文中以FineReport移动端为例]功能集成到他们的app里面去,而不需要安装两个app.Android端和IOS端的集成接口是不一样的,下面我们 ...

  2. 【转】使用命令行方式创建和启动android模拟器

    原文网址:http://blog.csdn.net/tiandinilv/article/details/8953001 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的 ...

  3. 解决Xcode8模拟器无法删除应用的问题

    关闭模拟器的​3DTouch.Hardware​ →Touch Pressure→Use Trackpad Force.

  4. Android模拟器基本使用和常用工具介绍

    注:其中部分内容参考网上资源 1.Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备.Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详 ...

  5. ios9 -3dtouch 手势添加到app上

    模拟器实现3dtouch参考以下网站: http://my.oschina.net/u/2340880/blog/511509 - (BOOL)application:(UIApplication * ...

  6. 3D-Touch Home Screen Quick Actions 使用

    1. 3D-Touch简单介绍 3D-Touch是iPhone 6s推出的一种可以让你与手机进行互动的全新方式.这一次,iPhone 能够感应你按压屏幕的力度.除了轻点.轻扫.双指开合这些熟悉的 Mu ...

  7. WP7.1 应用程序发布到Marketplace

    从8月22起Windows Phone marketplace可以提交7.1 sdk开发的应用了,尽管提交页面和方式与7.0是同一个,但是还是会出现一些问题.并且在提交之前也注意一些问题. 7.0 应 ...

  8. eclipse + Android Studio 集成 Genymotion 模拟器

    Genymotion 官网 -- android 模拟器https://www.genymotion.com 虚拟机下载安装目录C:\Users\xxx\AppData\Local\Genymobil ...

  9. Android Studio集成到Genymotion模拟器

    环境:Mac Android Studio 一.下载Android Studio 下载地址:http://www.android-studio.org/ 这个的安装没啥好说的了,基本的. 二.下载Ge ...

随机推荐

  1. CHtmlEditCtrl(1) : Use CHtmlEditCtrl to Create a Simple HTML Editor

    I needed a lightweight HTML editor to generate "rich text" emails, so I decided to explore ...

  2. ElasticSearch5.X—模糊查询和获取所有索引字段

    最近在做一个分布式数据存储的项目,需要用到ElastciSearch加速数据查询,其中部分功能需要进行模糊查询和统计索引库中已经建立的索引字段,网上查阅了很多资料,最终把这两个问题解决了,不容易!下面 ...

  3. 多模块Maven项目如何使用javadoc插件生成文档

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   需求 最近要对一个项目结构如下的Maven项目生成JavaDoc文档. Project                  ...

  4. 关于ngModelOptions用法总结 让校验不过的验证绑定ngModel

    updataOn 指定ng-model以什么绑定事件触发 default 就是默认的大家都知道blur 失去焦点的时候更新mouseover 鼠标滑过....... <input type=&q ...

  5. 【转】跟我一起学Spring 3(4)–深入理解IoC(控制反转)和DI(依赖注入)

    在继续下面的章节之前,我们要先说说大名鼎鼎的IoC和DI. 我们经常会听说IoC,也就是Inversion of Controller,控制反转.事实上,IoC并不是一个新鲜的概念,最早可能是在198 ...

  6. hadoop lzo应用

    几种压缩方式对比: LZO example: https://github.com/twitter/hadoop-lzo/blob/master/src/test/java/com/hadoop/ma ...

  7. 【DB2】索引

    1. 索引的概念 1.1 索引的优点 索引是表的一个或多个列的键值的有序列表,创建索引的原因有2个: 确保一个或多个列中值的唯一性 提高对表进行的查询的性能.当查询时想要以更快的速度找到所需要的列,或 ...

  8. AVERAGE和averageif函数

    1.AVERAGE(Number1,Number2……) 其中: Number1,number2,...是要计算平均值的 1-30 个参数. 注意事项: average函数的参数可以是一个,也可以是多 ...

  9. Reading CheckBoxes and Radio Buttons

    Input tags with the type attribute checkbox can be grouped like radio buttons so that several checkb ...

  10. PHP 反射API说明

    2.API概览:class Reflection { }interface Reflector { }class ReflectionException extends Exception { }cl ...