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

第一步:在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 getUserInfo].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

马甲包显示的3dtouch
马甲包显示的3dtouch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值