看了网上很多贴,但是感觉对于有些人来说太过婉转了,所以我就来个简单粗暴的
1,设置静态标签
首先要在info.plist 里面添加键值
UIApplicationShortcutItemType 这个键值设置一个快捷通道类型的字符串
UIApplicationShortcutItemTitle 这个键值设置标签的标题
选填项(下面这些键值不是必须设置的) :
UIApplicationShortcutItemSubtitle 设置标签的副标题
UIApplicationShortcutItemIconType 设置标签Icon类型
UIApplicationShortcutItemIconFile 设置标签的Icon文件
UIApplicationShortcutItemUserInfo 设置信息字典(用于传值)
这个时候代码是这么写的
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{
//判断先前我们设置的唯一标识
if
([shortcutItem.type isEqualToString:@
"one
"
]){
NSArray *arr = @[@
"hello 3D Touch"
];
UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil];这里写的是你静态标签将要打开的页面
//设置当前的VC 为rootVC
[self.window.rootViewController presentViewController:vc animated:YES completion:^{
}];
}
}
#pragma mark - 3DTouch
- (void)checkTouch:(UIApplication*)application
{
UIApplicationShortcutIcon *scanIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"sao_yi_sao"];
UIApplicationShortcutItem *scanItem = [[UIApplicationShortcutItem alloc]initWithType:@"sao_yi_sao" localizedTitle:@"扫一扫" localizedSubtitle:nil icon:scanIcon userInfo:nil];
application.shortcutItems =@[scanItem];
}
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
if ([shortcutItem.type isEqualToString:@"sao_yi_sao"]) {
//实际项目中可能会有跳转到制定页面,以及账户是否在线,登录状态等问题。可能会涉及一些线程间的通 信问题 视具体情况而定,
}
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(acceptFirstPageMes) name:@"" object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(comeHome:) name:@"UIApplicationDidEnterBackgroundNotification" object:nil];
}