diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignal.m b/iOS_SDK/OneSignalSDK/Source/OneSignal.m index c78b616d0..b48914b2f 100755 --- a/iOS_SDK/OneSignalSDK/Source/OneSignal.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignal.m @@ -698,6 +698,8 @@ + (void)setLaunchURLsInApp:(BOOL)launchInApp { NSMutableDictionary *newSettings = [[NSMutableDictionary alloc] initWithDictionary:appSettings]; newSettings[kOSSettingsKeyInAppLaunchURL] = launchInApp ? @true : @false; appSettings = newSettings; + // This allows this method to have an effect after init is called + [self enableInAppLaunchURL:launchInApp]; } + (void)setProvidesNotificationSettingsView:(BOOL)providesView { diff --git a/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m b/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m index 9993c3fef..a565ca075 100644 --- a/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m +++ b/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m @@ -3318,6 +3318,22 @@ - (void)testLaunchURL { XCTAssertFalse(OneSignalOverrider.launchWebURLWasCalled); } +- (void)testsetLaunchURLInAppAfterInit { + // 1. setLaunchURLsInApp to false + [OneSignal setLaunchURLsInApp:false]; + + // 2. Init OneSignal with app start + [UnitTestCommonMethods initOneSignal]; + [UnitTestCommonMethods runBackgroundThreads]; + + XCTAssertFalse([OneSignalUserDefaults.initStandard getSavedBoolForKey:OSUD_NOTIFICATION_OPEN_LAUNCH_URL defaultValue:false]); + + // 3. Change setLaunchURLsInApp to true + [OneSignal setLaunchURLsInApp:true]; + + XCTAssertTrue([OneSignalUserDefaults.initStandard getSavedBoolForKey:OSUD_NOTIFICATION_OPEN_LAUNCH_URL defaultValue:false]); +} + - (void)testTimezoneId { let mockTimezone = [NSTimeZone timeZoneWithName:@"Europe/London"];