硬件支持 iPhone 6s以上
系统支持iOS9以上
- 实现方式有两种:一种是plist文件(静态),一种是代码(动态)。
静态添加方式优先动态添加方式。
从手机桌面重按icon弹出的选项最多五个
,其中程序写入最多能显示四个
,另一个是app上架后系统自带的分享功能
如果要屏蔽掉通过代码添加的选项,再查看效果,要删除app,重新载入。
静态方式:
首先要添加一个UIApplicationShortcutItems的数组,在这个数组下添加键值对。
必填项:
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题选填项:
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
使用系统icon的UIApplicationShortcutItemIconType枚举
typedef NS_ENUM(NSInteger, UIApplicationShortcutIconType) {
UIApplicationShortcutIconTypeCompose,
UIApplicationShortcutIconTypePlay,
UIApplicationShortcutIconTypePause,
UIApplicationShortcutIconTypeAdd,
UIApplicationShortcutIconTypeLocation,
UIApplicationShortcutIconTypeSearch,
UIApplicationShortcutIconTypeShare,
UIApplicationShortcutIconTypeProhibit NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeContact NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeHome NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMarkLocation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeFavorite NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeLove NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCloud NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeInvitation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeConfirmation NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMail NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeMessage NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeDate NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTime NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCapturePhoto NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeCaptureVideo NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTask NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeTaskCompleted NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeAlarm NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeBookmark NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeShuffle NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeAudio NS_ENUM_AVAILABLE_IOS(9_1),
UIApplicationShortcutIconTypeUpdate NS_ENUM_AVAILABLE_IOS(9_1)
} NS_ENUM_AVAILABLE_IOS(9_0) __TVOS_PROHIBITED;
动态方式:
在AppDelegate.m文件的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
添加如下方法:
[self creatUIApplicationShortcutItemsWithOptions:launchOptions];
-(void)creatUIApplicationShortcutItemsWithOptions:(NSDictionary *)options{
/*
通过代码调用系统icon的方法如下:
UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeLocation];
*/
//自定义的icon,即UIApplicationShortcutItemIconFile类型
UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"money"];
UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"gouwuche"];
UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"wode"];
//创建UIApplicationShortcutItemUserInfo
NSDictionary *info1 = @{@"url":@"money"};
NSDictionary *info2 = @{@"url":@"gouwuche"};
NSDictionary *info3 = @{@"url":@"wode"};
//创建UIMutableApplicationShortcutItem
UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"money"
localizedTitle:@"钱包"
localizedSubtitle:@"这是钱包"
icon:icon1
userInfo:info1];
UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"gouwuche"
localizedTitle:@"购物车"
localizedSubtitle:@"这是购物车"
icon:icon2
userInfo:info2];
UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:@"wode"
localizedTitle:@"我的"
localizedSubtitle:@"这是我的"
icon:icon3
userInfo:info3];
//添加item
[UIApplication sharedApplication].shortcutItems = @[item1, item2, item3];
}
- 好,按照上面的操作复制黏贴之后,我们就验证了文章开头那句话是否正确了:
静态添加方式优先动态添加方式。
从手机桌面重按icon弹出的选项最多五个
,其中程序写入最多能显示四个
,另一个是app上架后系统自带的分享功能
答案是正确的,因为静态方式添加了三个item,动态方式也添加了三个item,最后显示的却只有四个item,并且静态方式添加的item全部显示,动态方式添加的item补位显示。那剩下那个分享item只能交给想要求证的你自己去把应用上架之后验证了……
到这就结束了吗?你touch一下选项试试呗!
是不是发现问题了?在控制台打印了一串
Could not load IOSurface for time string. Rendering locally instead.
对溜,还没结束呢……
不管是通过静态方式还是动态方式添加的touch选项,都会调用一个共同的代理方法,如下:
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler;
上面的代码复制黏贴完了之后,别忘了要把这个代理方法也黏贴到AppDelegate.m里面,任意位置都行,只要你喜欢,只要程序不报错,只要程序不报警告!
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{
//嘟 腰 萨 母 sing
NSLog(@"shortcutItem = %@",shortcutItem.type);
NSLog(@"shortcutItemUrl = %@",shortcutItem.userInfo);
if (completionHandler){
completionHandler(YES);
}
}
ok,这回彻底结束了
如果想了解peek和pop功能的请看这里
网友评论