79 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
| 
 | |
| #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
 |