132 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
		
		
			
		
	
	
			132 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#import "TDApplicationDelegateProxy.h"
							 | 
						||
| 
								 | 
							
								#import "NSObject+TDDelegateProxy.h"
							 | 
						||
| 
								 | 
							
								#import "UIApplication+TDPushClick.h"
							 | 
						||
| 
								 | 
							
								#import <objc/message.h>
							 | 
						||
| 
								 | 
							
								#import "TDAppLaunchReason.h"
							 | 
						||
| 
								 | 
							
								#import "TDCommonUtil.h"
							 | 
						||
| 
								 | 
							
								#import "TDLogging.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if __has_include(<ThinkingDataCore/TDClassHelper.h>)
							 | 
						||
| 
								 | 
							
								#import <ThinkingDataCore/TDClassHelper.h>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#import "TDClassHelper.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if __has_include(<ThinkingDataCore/TDCorePresetDisableConfig.h>)
							 | 
						||
| 
								 | 
							
								#import <ThinkingDataCore/TDCorePresetDisableConfig.h>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#import "TDCorePresetDisableConfig.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@implementation TDApplicationDelegateProxy
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:didReceiveRemoteNotification:fetchCompletionHandler:);
							 | 
						||
| 
								 | 
							
								    [TDApplicationDelegateProxy invokeWithTarget:self selector:selector, application, userInfo, completionHandler];
							 | 
						||
| 
								 | 
							
								    [TDApplicationDelegateProxy trackEventWithTarget:self application:application remoteNotification:userInfo];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification API_DEPRECATED("Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]", ios(4.0, 10.0)) {
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:didReceiveLocalNotification:);
							 | 
						||
| 
								 | 
							
								    [TDApplicationDelegateProxy invokeWithTarget:self selector:selector, application, notification];
							 | 
						||
| 
								 | 
							
								    [TDApplicationDelegateProxy trackEventWithTarget:self application:application localNotification:notification];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:continueUserActivity:restorationHandler:);
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason])  {
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": [TDCommonUtil string: userActivity.webpageURL.absoluteString],@"data":@{}};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return [TDApplicationDelegateProxy invokeReturnBOOLWithTarget:self selector:selector arg1:application arg2:userActivity arg3:restorationHandler];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:openURL:options:);
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason])  {
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": [TDCommonUtil string:url.absoluteString],@"data":@{}};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return [TDApplicationDelegateProxy invokeReturnBOOLWithTarget:self selector:selector arg1:app arg2:url arg3:options];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:handleOpenURL:);
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason])  {
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": [TDCommonUtil string:url.absoluteString], @"data":@{}};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return [TDApplicationDelegateProxy invokeReturnBOOLWithTarget:self selector:selector arg1:application arg2:url];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler API_AVAILABLE(ios(9.0)){
							 | 
						||
| 
								 | 
							
								    SEL selector = @selector(application:performActionForShortcutItem:completionHandler:);
							 | 
						||
| 
								 | 
							
								    [TDApplicationDelegateProxy invokeWithTarget:self selector:selector, application, shortcutItem, completionHandler];
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason])  {
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": @"",@"data": [TDCommonUtil dictionary:shortcutItem.userInfo]};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (void)trackEventWithTarget:(NSObject *)target application:(UIApplication *)application remoteNotification:(NSDictionary *)userInfo {
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (target != application.delegate) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
							 | 
						||
| 
								 | 
							
								        TDLogInfo(@"iOS version >= 10.0, callback for %@ was ignored.", @"application:didReceiveRemoteNotification:fetchCompletionHandler:");
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (application.applicationState != UIApplicationStateInactive) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason])  {
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": @"", @"data": [TDCommonUtil dictionary:userInfo]};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (void)trackEventWithTarget:(NSObject *)target application:(UIApplication *)application localNotification:(UILocalNotification *)notification API_DEPRECATED("Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]", ios(4.0, 10.0)){
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (target != application.delegate) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    BOOL isValidPushClick = NO;
							 | 
						||
| 
								 | 
							
								    if (application.applicationState == UIApplicationStateInactive) {
							 | 
						||
| 
								 | 
							
								        isValidPushClick = YES;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (!isValidPushClick) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    if (![TDCorePresetDisableConfig disableStartReason]) {
							 | 
						||
| 
								 | 
							
								        NSMutableDictionary *properties = [[NSMutableDictionary alloc] init];
							 | 
						||
| 
								 | 
							
								        properties[@"alertBody"] = notification.alertBody;
							 | 
						||
| 
								 | 
							
								        if (@available(iOS 8.2, *)) {
							 | 
						||
| 
								 | 
							
								            properties[@"alertTitle"] = notification.alertTitle;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
							 | 
						||
| 
								 | 
							
								        [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": @"", @"data": [TDCommonUtil dictionary:properties]};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								+ (NSSet<NSString *> *)optionalSelectors {
							 | 
						||
| 
								 | 
							
								    return [NSSet setWithArray:@[@"application:didReceiveLocalNotification:",
							 | 
						||
| 
								 | 
							
								                                  @"application:didReceiveRemoteNotification:fetchCompletionHandler:",
							 | 
						||
| 
								 | 
							
								                                  @"application:handleOpenURL:",
							 | 
						||
| 
								 | 
							
								                                  @"application:openURL:options:",
							 | 
						||
| 
								 | 
							
								                                  @"application:continueUserActivity:restorationHandler:",
							 | 
						||
| 
								 | 
							
								                                  @"application:performActionForShortcutItem:completionHandler:"]];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@end
							 |