79 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Mathematica
		
	
	
	
|  | 
 | ||
|  | #import "TDUNUserNotificationCenterDelegateProxy.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
 | ||
|  | 
 | ||
|  | #import "NSObject+TDDelegateProxy.h"
 | ||
|  | #import <objc/message.h>
 | ||
|  | #import "TDAPPPushParams.h"
 | ||
|  | #import "TDAppLaunchReason.h"
 | ||
|  | #import "TDCommonUtil.h"
 | ||
|  | #import "ThinkingAnalyticsSDK.h"
 | ||
|  | #import "ThinkingAnalyticsSDKPrivate.h"
 | ||
|  | 
 | ||
|  | @implementation TDUNUserNotificationCenterDelegateProxy
 | ||
|  | 
 | ||
|  | - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler  API_AVAILABLE(ios(10.0)){
 | ||
|  |     SEL selector = @selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:);
 | ||
|  |     [TDUNUserNotificationCenterDelegateProxy invokeWithTarget:self selector:selector, center, response, completionHandler];
 | ||
|  |     [TDUNUserNotificationCenterDelegateProxy trackEventWithTarget:self notificationCenter:center notificationResponse:response];
 | ||
|  | }
 | ||
|  | 
 | ||
|  | - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler API_AVAILABLE(ios(10.0)){
 | ||
|  |     SEL selector = @selector(userNotificationCenter:willPresentNotification:withCompletionHandler:);
 | ||
|  |     [TDUNUserNotificationCenterDelegateProxy invokeWithTarget:self selector:selector, center, notification, completionHandler];
 | ||
|  |     [TDUNUserNotificationCenterDelegateProxy trackEventWithTarget:self notificationCenter:center notification:notification];
 | ||
|  | }
 | ||
|  | 
 | ||
|  | + (void)trackEventWithTarget:(NSObject *)target notificationCenter:(UNUserNotificationCenter *)center notification:(UNNotification *)notification  API_AVAILABLE(ios(10.0)){
 | ||
|  |     
 | ||
|  | }
 | ||
|  | 
 | ||
|  | + (void)trackEventWithTarget:(NSObject *)target notificationCenter:(UNUserNotificationCenter *)center notificationResponse:(UNNotificationResponse *)response  API_AVAILABLE(ios(10.0)){
 | ||
|  | 
 | ||
|  |     if (target != center.delegate) {
 | ||
|  |         return;
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     if (![TDCorePresetDisableConfig disableStartReason]) {
 | ||
|  |         NSMutableDictionary *properties = [[NSMutableDictionary alloc] init];
 | ||
|  |         NSDictionary *userInfo = __td_get_userNotificationCenterResponse(response);
 | ||
|  |         if (userInfo) {
 | ||
|  |             [properties addEntriesFromDictionary:userInfo];
 | ||
|  |         }
 | ||
|  |         properties[@"title"] = __td_get_userNotificationCenterRequestContentTitle(response);
 | ||
|  |         properties[@"body"] = __td_get_userNotificationCenterRequestContentBody(response);
 | ||
|  |         
 | ||
|  |         [[TDAppLaunchReason sharedInstance] clearAppLaunchParams];
 | ||
|  |         [TDAppLaunchReason sharedInstance].appLaunchParams = @{@"url": @"", @"data": [TDCommonUtil dictionary:properties]};
 | ||
|  |     }
 | ||
|  |     
 | ||
|  |     if ([ThinkingAnalyticsSDK defaultInstance].config.enableAutoPush) {
 | ||
|  |         @try {
 | ||
|  |             if ([response isKindOfClass:[NSClassFromString(@"UNNotificationResponse") class]]) {
 | ||
|  |                 NSDictionary *userInfo = [response valueForKeyPath:@"notification.request.content.userInfo"];
 | ||
|  |                 [TDAppLaunchReason td_ops_push_click:userInfo];
 | ||
|  |             }
 | ||
|  |         } @catch (NSException *exception) {
 | ||
|  |             
 | ||
|  |         }
 | ||
|  |     }
 | ||
|  |     
 | ||
|  | }
 | ||
|  | 
 | ||
|  | + (NSSet<NSString *> *)optionalSelectors {
 | ||
|  |     return [NSSet setWithArray:@[@"userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:", @"userNotificationCenter:willPresentNotification:withCompletionHandler:"]];
 | ||
|  | }
 | ||
|  | 
 | ||
|  | @end
 |