您的位置:首页 > 移动开发 > IOS开发

快速集成3D Touch,针对不同的用户,不同包显示不同的3D Touch

2017-08-03 11:43 399 查看
第一步:在application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions方法里面设置根控制器,这是都知道的

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

self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

self.window.backgroundColor = [UIColor whiteColor];

NSString *key = @"CFBundleShortVersionString";
// 上一次的使用版本(存储在沙盒中的版本号)
NSString *oldVersion = [[NSUserDefaults standardUserDefaults] objectForKey:version];
// 当前软件的版本号(从Info.plist中获得)
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];

if ([currentVersion isEqualToString:oldVersion]) { // 版本号相同:这次打开和上次打开的是同一个版本

//自动获取跟控制器,此方法内部做初始化3dtouch处理
UIViewController *root = [BWJGetRootController autoGetRootController];

//设置广告页
[self setupXHLaunchAd];

self.window.rootViewController = root;

} else { // 这次打开的版本和上一次不一样,显示新特性

// 将当前的版本号存进沙盒
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:version];
[[NSUserDefaults standardUserDefaults] synchronize];

self.window.rootViewController = [[BWJNewfeatureController alloc] init];
}
[self.window makeKeyAndVisible];


第二步:在自动获取跟控制器的工具类(BWJGetRootController)做是否显示3DTouch的判断(3D是ios9.0以上版本才可以使用)

//此方法在新特性页面点击后也会调用,所以只有初始化的tabbar的根控制器才会初始化3dtouch
+ (UIViewController *)autoGetRootController {

homeController *tabBarController = [[homeController alloc]init];

if (IOS9) {//版本大于9.0 初始化3dtouch
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appdelegate setUp3DtouhWithApplication:[UIApplication sharedApplication]];
}

return  tabBarController;

}


第三步:创建appdelegate分类(AppDelegate+BWJ3Dtouch)

在.h文件声明一个方法初始化3dtouch
#import "AppDelegate.h"

@interface AppDelegate (BWJ3Dtouch)

- (void)setUp3DtouhWithApplication:(UIApplication *)application;

@end


在.m文件实现方法初始化3dtouch
- (void)setUp3DtouhWithApplication:(UIApplication *)application {
UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_mall"];

UIMutableApplicationShortcutItem *item1 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeOne localizedTitle:BWJAppType == BWJBundleTypeBaiWujie ? @"百物街商城":@"商城" localizedSubtitle:@"" icon:icon1 userInfo:nil];

UIApplicationShortcutIcon *icon2 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_discovery"];

UIMutableApplicationShortcutItem *item2 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeTwo localizedTitle:@"动态" localizedSubtitle:@"" icon:icon2 userInfo:nil];

UIApplicationShortcutIcon *icon3 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_order"];

UIMutableApplicationShortcutItem *item3 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeThree localizedTitle:@"我的订单" localizedSubtitle:@"" icon:icon3 userInfo:nil];

UIApplicationShortcutIcon *icon4 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_announced"];

UIMutableApplicationShortcutItem *item4 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeFour localizedTitle:@"揭晓" localizedSubtitle:@"" icon:icon4 userInfo:nil];

UIApplicationShortcutIcon *icon5 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_live"];

UIMutableApplicationShortcutItem *item5 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeFive localizedTitle:@"我要直播" localizedSubtitle:@"" icon:icon5 userInfo:nil];

UIApplicationShortcutIcon *icon6 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"touch_wallet"];

UIMutableApplicationShortcutItem *item6 = [[UIMutableApplicationShortcutItem alloc]initWithType:BWJ3DTouchTypeSix localizedTitle:@"我的钱包" localizedSubtitle:@"" icon:icon6 userInfo:nil];

NSArray *items;
if ([BWJUserDefault getConfigInfo].iospay_version == IAPVersion) {//审核状态判断显示哪些
if (BWJAppType == BWJBundleTypeBaiWujie) {
items = @[item1, item2, item3];
} else {
items = @[item1, item3];
}
} else {
if ([BWJUserDefault getUserInfo].auth == 1 || ([BWJUserDefault getUserInfo].auth == 0 && [[BWJUserDefault getUser
4000
Info].auth_info.status isEqualToString:@"1"])) {//百物街主播用户
if (BWJAppType == BWJBundleTypeBaiWujie) {//百物街主包
items = @[item1, item4, item6, item5];
} else {//马甲包
items = @[item1, item4 ,item3, item6];
}
} else {//非主播用户
if (BWJAppType == BWJBundleTypeBaiWujie) {//百物街主包
items = @[item1, item4, item6, item3];
} else {
items = @[item1, item4, item6, item3];
}
}
}
//设置3Dtouch数组
application.shortcutItems = items;
}


在.m文件实现3dtouch的点击事件

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
homeController *home = (homeController *)self.window.rootViewController;
BWJNavigationController *navigationController = (BWJNavigationController *)home.selectViewController;
NSInteger count = navigationController.viewControllers.count;

UIViewController *vc = navigationController.viewControllers[count - 1];

NSString *type = shortcutItem.type;
if ([type isEqualToString:BWJ3DTouchTypeOne]) {

if ([BWJUserDefault getUserInfo].ID.length) {

if ([vc isKindOfClass:[BWJHomeBaseController class]]) {//如果栈上面是这个控制器,直接进入
//发通知选择商城
[[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToMallNotification object:nil];
return;
}
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.tabBarController hideTabBar:NO];
[navigationController popToRootViewControllerAnimated:NO];
[delegate.tabBarController touchBtnAtIndex:0];

[[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToMallNotification object:nil];

}

} else if ([type isEqualToString:BWJ3DTouchTypeTwo]){
if ([BWJUserDefault getUserInfo].ID.length) {
if ([vc isKindOfClass:[BWJDiscoveryBaseController class]]) {//如果栈上面是这个控制器,直接进入
//发通知选中动态
[[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToDiscoveryNotification object:nil];
return;
}
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.tabBarController hideTabBar:NO];
[navigationController popToRootViewControllerAnimated:NO];
[delegate.tabBarController touchBtnAtIndex:2];

}
} else if ([type isEqualToString:BWJ3DTouchTypeThree]) {
if ([BWJUserDefault getUserInfo].ID.length) {
if ([vc isKindOfClass:[BWJMyOrderMainController class]]) {
return;
}
BWJMyOrderMainController *myOrder = [[BWJMyOrderMainController alloc] init];
[navigationController pushViewController:myOrder animated:YES];
}
} else if ([type isEqualToString:BWJ3DTouchTypeFour]) {
if ([BWJUserDefault getUserInfo].ID.length) {
if ([vc isKindOfClass:[BWJAnnoucedBaseController class]]) {//如果栈上面是这个控制器,直接进入
//发通知选中动态
[[NSNotificationCenter defaultCenter] postNotificationName:BWJ3DTouchToAnnoucedNotification object:nil];
return;
}
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[delegate.tabBarController hideTabBar:NO];
[navigationController popToRootViewControllerAnimated:NO];
[delegate.tabBarController touchBtnAtIndex:1];

}
} else if ([type isEqualToString:BWJ3DTouchTypeFive]) {
if ([BWJUserDefault getUserInfo].ID.length) {
if ([vc isKindOfClass:[startplay class]] || [vc isKindOfClass:[LiveShow class]] || [vc isKindOfClass:[BWJChooseProductController class]]) {//如果栈上面是这个控制器,直接进入

return;
}
for (UIViewController *vc in navigationController.viewControllers) {
if ([vc isKindOfClass:[moviePlay class]]) {
[BWJTipsVew showTipsViewWithString:@"请先退出直播间再开播哦!"];
return;
}
}
[navigationController popToRootViewControllerAnimated:NO];
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appdelegate.tabBarController touchBtnAtIndex:2];

}
} else {
if ([BWJUserDefault getUserInfo].ID.length) {
if ([vc isKindOfClass:[BWJMyWalletViewController class]]) {
return;
}
BWJMyWalletViewController *myWallet = [[BWJMyWalletViewController alloc] init];
[navigationController pushViewController:myWallet animated:YES];
}
}

}


//这样就大功告成了,来看看效果图

主播显示的3dtouch



用户显示的3dtouch



马甲包显示的3dtouch

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  3dtouch ios 集成 自定义
相关文章推荐