From 57c6f086688c205f6b973ab0606a4187eed5f76c Mon Sep 17 00:00:00 2001 From: Nan Date: Fri, 4 Oct 2024 17:29:32 -0700 Subject: [PATCH] Handle when jwt_required is not returned --- .../Source/OneSignalUserManagerImpl.swift | 14 ++++++++++++++ iOS_SDK/OneSignalSDK/Source/OneSignal.m | 3 +++ 2 files changed, 17 insertions(+) diff --git a/iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift b/iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift index 065c7bc2f..378fbbfa5 100644 --- a/iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift +++ b/iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift @@ -663,6 +663,20 @@ extension OneSignalUserManagerImpl { jwtConfig.isRequired = required } + /** + This is called when remote params does not return the property `IOS_JWT_REQUIRED`. + It is likely this feature is not enabled for the app, so we will assume it is off. + However, don't overwrite the value if this has already been set. + */ + @objc + public func remoteParamsReturnedUnknownRequiresUserAuth() { + guard jwtConfig.isRequired == nil else { + return + } + OneSignalLog.onesignalLog(.LL_DEBUG, message: "remoteParamsReturnedUnknownRequiresUserAuth called") + jwtConfig.isRequired = false + } + @objc public func subscribeToJwtConfig(_ listener: OSUserJwtConfigListener, key: String) { jwtConfig.subscribe(listener, key: key) diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignal.m b/iOS_SDK/OneSignalSDK/Source/OneSignal.m index 7489caa7e..088a8538f 100755 --- a/iOS_SDK/OneSignalSDK/Source/OneSignal.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignal.m @@ -650,6 +650,9 @@ + (void)downloadIOSParamsWithAppId:(NSString *)appId { [OneSignalCoreImpl.sharedClient executeRequest:[OSRequestGetIosParams withUserId:userId appId:appId] onSuccess:^(NSDictionary *result) { if (result[IOS_JWT_REQUIRED]) { OneSignalUserManagerImpl.sharedInstance.requiresUserAuth = [result[IOS_JWT_REQUIRED] boolValue]; + } else { + // Remote params did not return IOS_JWT_REQUIRED + [OneSignalUserManagerImpl.sharedInstance remoteParamsReturnedUnknownRequiresUserAuth]; } if (result[IOS_USES_PROVISIONAL_AUTHORIZATION] != (id)[NSNull null]) {