Skip to content

Commit d336ae6

Browse files
committed
Merge pull request #1326 from OneSignal/5.x.x/fix/forward_opens_from_non_onesignal_notifs
[v5] Fix forwarding notification opens from non onesignal notifs
2 parents 8f6c4a5 + 5552f69 commit d336ae6

File tree

2 files changed

+16
-45
lines changed

2 files changed

+16
-45
lines changed

iOS_SDK/OneSignalSDK/OneSignalNotifications/Categories/UNUserNotificationCenter+OneSignalNotifications.m

Lines changed: 14 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -308,35 +308,11 @@ void finishProcessingNotification(UNNotification *notification,
308308
completionHandler(completionHandlerOptions);
309309
}
310310

311-
// Apple's docs - Called to let your app know which action was selected by the user for a given notification.
312-
- (void)onesignalUserNotificationCenter:(UNUserNotificationCenter *)center
313-
didReceiveNotificationResponse:(UNNotificationResponse *)response
314-
withCompletionHandler:(void(^)(void))completionHandler {
315-
[OneSignalNotificationsUNUserNotificationCenter traceCall:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"];
316-
// return if the user has not granted privacy permissions or if not a OneSignal payload
317-
if ([OSPrivacyConsentController shouldLogMissingPrivacyConsentErrorWithMethodName:nil] || ![OneSignalCoreHelper isOneSignalPayload:response.notification.request.content.userInfo]) {
318-
SwizzlingForwarder *forwarder = [[SwizzlingForwarder alloc]
319-
initWithTarget:self
320-
withYourSelector:@selector(
321-
onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
322-
)
323-
withOriginalSelector:@selector(
324-
userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
325-
)
326-
];
327-
if (forwarder.hasReceiver) {
328-
[forwarder invokeWithArgs:@[center, response, completionHandler]];
329-
} else {
330-
completionHandler();
331-
}
332-
return;
333-
}
334-
335-
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: Fired!"];
336-
337-
[OneSignalNotificationsUNUserNotificationCenter processiOS10Open:response];
338-
339-
// Call orginal selector if one was set.
311+
+ (void)forwardReceivedNotificationResponseWithCenter:(UNUserNotificationCenter *)center
312+
didReceiveNotificationResponse:(UNNotificationResponse *)response
313+
OneSignalCenter:(id)instance
314+
withCompletionHandler:(void(^)(void))completionHandler {
315+
// Call original selector if one was set.
340316
SwizzlingForwarder *forwarder = [[SwizzlingForwarder alloc]
341317
initWithTarget:instance
342318
withYourSelector:@selector(
@@ -365,20 +341,19 @@ - (void)onesignalUserNotificationCenter:(UNUserNotificationCenter *)center
365341
completionHandler();
366342
}
367343

368-
369344
// Apple's docs - Called to let your app know which action was selected by the user for a given notification.
370345
- (void)onesignalUserNotificationCenter:(UNUserNotificationCenter *)center
371346
didReceiveNotificationResponse:(UNNotificationResponse *)response
372-
withCompletionHandler:(void(^)())completionHandler {
373-
[OneSignalUNUserNotificationCenter traceCall:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"];
374-
375-
if (![OSPrivacyConsentController shouldLogMissingPrivacyConsentErrorWithMethodName:nil] && [OneSignalHelper isOneSignalPayload:response.notification.request.content.userInfo]) {
376-
[OneSignal onesignalLog:ONE_S_LL_VERBOSE message:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: Fired!"];
377-
378-
[OneSignalUNUserNotificationCenter processiOS10Open:response];
347+
withCompletionHandler:(void(^)(void))completionHandler {
348+
[OneSignalNotificationsUNUserNotificationCenter traceCall:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:"];
349+
350+
if (![OSPrivacyConsentController shouldLogMissingPrivacyConsentErrorWithMethodName:nil] && [OneSignalCoreHelper isOneSignalPayload:response.notification.request.content.userInfo]) {
351+
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"onesignalUserNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: Fired!"];
352+
353+
[OneSignalNotificationsUNUserNotificationCenter processiOS10Open:response];
379354
}
380-
381-
[OneSignalUNUserNotificationCenter forwardReceivedNotificationResponseWithCenter:center didReceiveNotificationResponse:response OneSignalCenter:self withCompletionHandler:completionHandler];
355+
356+
[OneSignalNotificationsUNUserNotificationCenter forwardReceivedNotificationResponseWithCenter:center didReceiveNotificationResponse:response OneSignalCenter:self withCompletionHandler:completionHandler];
382357
}
383358

384359
+ (BOOL)isDismissEvent:(UNNotificationResponse *)response {

iOS_SDK/OneSignalSDK/UnitTests/UIApplicationDelegateSwizzlingTests.m

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ - (UNNotificationResponse*)createOneSignalNotificationResponse {
566566
id userInfo = @{@"custom":
567567
@{ @"i": @"b2f7f966-d8cc-11e4-bed1-df8f05be55ba" }
568568
};
569-
569+
570570
return [UnitTestCommonMethods createBasiciOSNotificationResponseWithPayload:userInfo];
571571
}
572572

@@ -575,7 +575,6 @@ - (UNNotificationResponse*)createNonOneSignalNotificationResponse {
575575
}
576576

577577
- (void)testNotificationOpenForwardsToLegacySelector {
578-
579578
AppDelegateForExistingSelectorsTest* myAppDelegate = [AppDelegateForExistingSelectorsTest new];
580579
UIApplication.sharedApplication.delegate = myAppDelegate;
581580

@@ -590,9 +589,7 @@ - (void)testNotificationOpenForwardsToLegacySelector {
590589
)
591590
]);
592591
XCTAssertEqual([OneSignalAppDelegateOverrider callCountForSelector:@"oneSignalReceiveRemoteNotification:UserInfo:fetchCompletionHandler:"], 1);
593-
594-
595-
592+
596593
notifResponse = [self createNonOneSignalNotificationResponse];
597594
notifCenter = [UNUserNotificationCenter currentNotificationCenter];
598595
notifCenterDelegate = notifCenter.delegate;
@@ -604,7 +601,6 @@ - (void)testNotificationOpenForwardsToLegacySelector {
604601
)
605602
]);
606603
XCTAssertEqual([OneSignalAppDelegateOverrider callCountForSelector:@"oneSignalReceiveRemoteNotification:UserInfo:fetchCompletionHandler:"], 2);
607-
608604
}
609605

610606
- (void)testAppDelegateInheritsFromBaseMissingSelectors {

0 commit comments

Comments
 (0)