iOS版MSTR Client登录壳改造策略二(单应用的实现方法)

单应用实现思路与分离应用实现思路的主要区别在于MSTR Client程序的改造方面。
实现思路:不再单独建立登录壳应用,而是在MSTR Client端程序上直接进行改造,在init方法中swizzling didFinishLaunchingWithOptions方法,在自定义方法中加载登录页面,之后在登录页面触发登录事件的时候用openURL的方式重新加载应用。

具体的关键点实现步骤如下:

1.新建一个m文件扩展MSTRMobileAppDelegate(具体见策略一),添加init方法的重写并对didFinishLaunchingWithOptions进行swizzling,代码如下:
- (id)init
{
   
    Method myReplacementMethodLoad = class_getInstanceMethod([self class], @selector(my_application:didFinishLaunchingWithOptions:));
   
    Method originMethodLoad = class_getInstanceMethod([self class], @selector(application:didFinishLaunchingWithOptions:));
   
    method_exchangeImplementations(myReplacementMethodLoad, originMethodLoad);
   
    return self;
}

2.在自定义didFinishLaunchingWithOptions方法中添加对自定义登录页面的加载,代码如下:
 
  
- (BOOL)my_application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   
    [self my_application:application didFinishLaunchingWithOptions:launchOptions];
   
    LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    loginViewController.delegate = self;
   
    [self setupNavigationControllerWithApplicationLauncher:(ApplicationLauncherController*)loginViewController];
    self.navigationController.navigationBarHidden = YES;
   
    [loginViewController release];
   
    return YES;
}

3.shouldLaunch方法中进行对openURL方法的swizzling(具体见策略一)。
4.自定义openURL方法中的处理与策略一致。

其余部分客户端改造与策略一相同,MicroStrategyMobile工程的WCE改造见策略一。
这样单一应用的登录壳改造就完成了。

优缺点:有点就是完整的单一应用,对于版本的部署以及发布升级都有很多好处。有个缺点就是在登录画面点击登录的时候会有2-3秒的黑屏时间,这是因动态载入画面加载导致的问题,不过时间很短可以忽略。

注:MicroStrategy 9.3.1新引入了动态载入画面的特性,因此在改造客户端的时候应该重写一下动态载入画面的方法,如果不需要该功能直接return NO即可,如果不进行方法重写,程序加载的时候会发生错误。

你可能感兴趣的:(ios,扩展,mstr,MicroStrategy,单应用)