所谓的主屏交互也就是在手机的桌面页,用力的按压(当然别太用力。。按碎了屏幕)应用图标,生成的几个快捷操作按钮的。
主屏交互的演示图.jpg
主屏交互的按钮有指定的模型类,UIApplicationShortcutItem,
添加shortCutItem有两种方式:
- 静态添加
- 动态添加
静态添加 shortCutItem
这种方式主要是在工程的info.plist文件中添加相关的属性。
如下图所示
info plist.jpeg
- UIApplicationShortcutItemIconFile
主屏交互中使用的按钮自定义图片名。 - UIApplicationShortcutItemTitle
主屏交互中使用的按钮名称。 - UIApplicationShortcutItemType
主屏交互中使用的按钮的唯一标示符,用作判断点击了哪一个快捷按钮。 - UIApplicationShortcutItemSubtitle
快捷可选项的子标题(可选) - UIApplicationShortcutItemIconType
快捷可选项的图标(可选) - UIApplicationShortcutItemUserInfo
快捷可选项的附加信息(可选)
动态添加 shortCutItem
UIApplicationShortcutItem:可以看作是3D Touch点击后,弹出菜单每行对应的模型,一行对应一个UIApplicationShortcutItem对象。
动态添加时就是我们可以通过生成shortcutItem对象数组,添加给
UIApplication单例对象.
UIApplicationShortcutItem 初始方法如下
- (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary *)userInfo;
- type
快捷可选项的特定字符串(必填) - localizedTitle
快捷可选项的标题(必填) - localizedSubtitle
快捷可选项的子标题(可选) - icon
快捷可选项的图标(可选) - userInfo
快捷可选项的附加信息(可选)
初始化生成对象这一步操作我们可以写在app的启动方法里:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
生成shortcutItem代码,以及赋值给UIApplication单例数组
NSMutableArray *arrShortcutItem = (NSMutableArray *)[UIApplication sharedApplication].shortcutItems;
UIApplicationShortcutItem *shoreItem1 = [[UIApplicationShortcutItem alloc] initWithType:@"co.erplus.search" localizedTitle:@"搜索" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch] userInfo:nil];
[arrShortcutItem addObject:shoreItem1];
UIApplicationShortcutItem *shoreItem2 = [[UIApplicationShortcutItem alloc] initWithType:@"co.erplus.newTask" localizedTitle:@"新建任务" localizedSubtitle:@"" icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCompose] userInfo:nil];
[arrShortcutItem addObject:shoreItem2];
[UIApplication sharedApplication].shortcutItems = arrShortcutItem;
在动态添加快捷按钮时,我并没有选择使用自定义的图片,因为苹果也为我们准备了很多系统图标,也是非常丰富的。
苹果准备的系统icon.jpg
苹果的系统icon是丰富的,但如果想使用自定的图标icon,官方推荐一倍图使用35x35。
监听主屏交互按钮的点击事件
成功设置好主屏交互的快捷按钮后,我们剩下要做的就是在APP内监听快捷按钮的点击事件,此时我们就需要用到UIApplicationShortcutItemType,快捷按钮的唯一标示符。
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
//不管APP在后台还是进程被杀死,只要通过主屏快捷操作进来的,都会调用这个方法
NSLog(@"name:%@\ntype:%@", shortcutItem.localizedTitle, shortcutItem.type);
}
用这个方法就可以监听到按钮的点击事件了,通过shortcutItem.type区别点击的是哪一个按钮,进行不同的跳转或者操作。