代理框架
TMFRouter框架提供了直接接管应用的生命周期,应用生命周期管理、处理与分发 UIApplication 的代理事件的能力。
使用方式
在main.m中添加代码:
#import "TMFRouter.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
// 如果您的工程系统代理类名不是AppDelegate,可以这样传入您的类名
gTMFRouterAppDelegateStr = @"AppDelegate";
tmf_router_AppDelegate_initializeHooker();
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
在TMFAppDelegate中,可以看到提供了如下代理:
/**
* 建议在 beforeDidFinishLaunchingWithOptions 中实现TMF SDK的初始化。
*/
- (void)tmf_application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
/**
* 框架回调该方法,让接入应用可以接管自己的didFinishLaunching逻辑。
* 并且当返回TMFAppDelegateCallbackResultReturnYES或TMFAppDelegateCallbackResultReturnNO时,直接给系统返回,不再执行 afterDidFinishLaunchingWithOptions 方法。
*
* @return 是继续让框架执行,还是直接给系统返回YES或NO
*/
- (TMFAppDelegateCallbackResult)tmf_application:(UIApplication *)application handleDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
/**
* didFinishLaunchingWithOptions 后的回调
*/
- (void)tmf_application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
- (BOOL)tmf_application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options;
- (void)tmf_applicationWillResignActive:(UIApplication *)application;
- (void)tmf_applicationDidEnterBackground:(UIApplication *)application;
- (void)tmf_applicationWillEnterForeground:(UIApplication *)application;
- (void)tmf_applicationDidBecomeActive:(UIApplication *)application;
- (void)tmf_applicationWillTerminate:(UIApplication *)application;
- (void)tmf_applicationDidReceiveMemoryWarning:(UIApplication *)application;
推送相关的回调在这里并没有回调,请参阅TMFPush SDK的相关文档。
注意:TMFApplication的原则是,如果您已经实现了系统默认的代理事件,则TMFApplication不再回调对应的事件。需特别注意的是:如果您实现了系统的 didFinishLaunchingWithOptions 方法,那么TMFAppDelegate的 beforeDidFinishLaunchingWithOptions、handleDidFinishLaunchingWithOptions、afterDidFinishLaunchingWithOptions 都不会回调。