@@ -129,9 +129,6 @@ + (void)sizzlePreiOS10MethodsPhase2 {
129129 if ([OneSignalHelper isIOSVersionGreaterThanOrEqual: @" 10.0" ])
130130 return ;
131131
132- injectToProperClass (@selector (oneSignalReceivedRemoteNotification:userInfo: ),
133- @selector (application:didReceiveRemoteNotification: ), delegateSubclasses, [OneSignalAppDelegate class ], delegateClass);
134-
135132 injectToProperClass (@selector (oneSignalLocalNotificationOpened:notification: ),
136133 @selector (application:didReceiveLocalNotification: ), delegateSubclasses, [OneSignalAppDelegate class ], delegateClass);
137134}
@@ -184,17 +181,6 @@ - (void)oneSignalDidRegisterUserNotifications:(UIApplication*)application settin
184181 [self oneSignalDidRegisterUserNotifications: application settings: notificationSettings];
185182}
186183#pragma clang diagnostic pop
187- // Fallback method - Normally this would not fire as oneSignalReceiveRemoteNotification below will fire instead. Was needed for iOS 6 support in the past.
188- - (void )oneSignalReceivedRemoteNotification : (UIApplication*)application userInfo : (NSDictionary *)userInfo {
189- [OneSignal onesignalLog: ONE_S_LL_VERBOSE message: @" oneSignalReceivedRemoteNotification:userInfo:" ];
190-
191- if ([OneSignal appId ]) {
192- [OneSignal notificationReceived: userInfo wasOpened: YES ];
193- }
194-
195- if ([self respondsToSelector: @selector (oneSignalReceivedRemoteNotification:userInfo: )])
196- [self oneSignalReceivedRemoteNotification: application userInfo: userInfo];
197- }
198184
199185// Fires when a notication is opened or recieved while the app is in focus.
200186// - Also fires when the app is in the background and a notificaiton with content-available=1 is received.
@@ -238,15 +224,35 @@ - (void) oneSignalReceiveRemoteNotification:(UIApplication*)application UserInfo
238224 return ;
239225 }
240226
241- // Make sure not a cold start from tap on notification (OS doesn't call didReceiveRemoteNotification)
242- if ([self respondsToSelector: @selector (oneSignalReceivedRemoteNotification:userInfo: )]
243- && ![[OneSignal valueForKey: @" coldStartFromTapOnNotification" ] boolValue ])
244- [self oneSignalReceivedRemoteNotification: application userInfo: userInfo];
227+ [OneSignalAppDelegate
228+ forwardToDepercatedApplication: application
229+ didReceiveRemoteNotification: userInfo];
245230
246231 if (!startedBackgroundJob)
247232 completionHandler (UIBackgroundFetchResultNewData);
248233}
249234
235+ // Forwards to application:didReceiveRemoteNotification: in the rare case
236+ // that the app happens to use this BUT doesn't use
237+ // UNUserNotificationCenterDelegate OR
238+ // application:didReceiveRemoteNotification:fetchCompletionHandler:
239+ // https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623117-application?language=objc
240+ +(void )forwardToDepercatedApplication : (UIApplication*)application didReceiveRemoteNotification : (NSDictionary *)userInfo {
241+ id <UIApplicationDelegate> originalDelegate = UIApplication.sharedApplication .delegate ;
242+ if (![originalDelegate respondsToSelector: @selector (application:didReceiveRemoteNotification: )])
243+ return ;
244+
245+ // Make sure we don't forward to this depreated selector on cold start
246+ // from a notification open, since iOS itself doesn't call this either
247+ if ([[OneSignal valueForKey: @" coldStartFromTapOnNotification" ] boolValue ])
248+ return ;
249+
250+ #pragma clang diagnostic push
251+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
252+ [originalDelegate application: application didReceiveRemoteNotification: userInfo];
253+ #pragma clang diagnostic pop
254+ }
255+
250256#pragma clang diagnostic push
251257#pragma clang diagnostic ignored "-Wdeprecated"
252258- (void ) oneSignalLocalNotificationOpened : (UIApplication*)application handleActionWithIdentifier : (NSString *)identifier forLocalNotification : (UILocalNotification*)notification completionHandler : (void (^)()) completionHandler {
0 commit comments