From c81982d553ab559a2e4803007fb14a6aa1f0af24 Mon Sep 17 00:00:00 2001 From: Nan Date: Tue, 14 Oct 2025 13:26:23 -0700 Subject: [PATCH] To create a new string, don't use localizedDescription * It seems that when creating a new string with stringWithFormat, copying the `localizedDescription` can raise an `NSInvalidArgumentException`. Not reproducible, but reported by users. * This matches other calls to the client where we log the error returned. Example stacktrace: Fatal Exception: NSInvalidArgumentException 0 CoreFoundation 0x... __exceptionPreprocess 1 libobjc.A.dylib 0x... objc_exception_throw 2 CoreFoundation 0x... +[NSObject(NSObject) _copyDescription] 3 CoreFoundation 0x... ___forwarding___ 4 CoreFoundation 0x... _CF_forwarding_prep_0 5 OneSignalInAppMessages 0x... __77-[OSMessagingController attemptFetchWithRetries:rywData:attempts:retryLimit:]_block_invoke.90 + 320 (OSMessagingController.m:320) 6 OneSignalCore 0x... -[OneSignalClient handleJSONNSURLResponse:data:error:isAsync:withRequest:onSuccess:onFailure:] + 214 (OneSignalClient.m:214) 7 OneSignalCore 0x... __54-[OneSignalClient executeRequest:onSuccess:onFailure:]_block_invoke + 110 (OneSignalClient.m:110) --- .../OneSignalInAppMessages/Controller/OSMessagingController.m | 4 ++-- .../Source/OneSignalLiveActivitiesManagerImpl.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/iOS_SDK/OneSignalSDK/OneSignalInAppMessages/Controller/OSMessagingController.m b/iOS_SDK/OneSignalSDK/OneSignalInAppMessages/Controller/OSMessagingController.m index 2cc5d964a..c388dd8ea 100644 --- a/iOS_SDK/OneSignalSDK/OneSignalInAppMessages/Controller/OSMessagingController.m +++ b/iOS_SDK/OneSignalSDK/OneSignalInAppMessages/Controller/OSMessagingController.m @@ -318,7 +318,7 @@ - (void)attemptFetchWithRetries:(NSString *)subscriptionId onFailure:^(OneSignalClientError *error) { NSDictionary* responseHeaders = error.responseHeaders; - [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"getInAppMessagesFromServer failure: %@", error.underlyingError.localizedDescription]]; + [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"getInAppMessagesFromServer failure: %@", error.description]]; if (error.code == 425 || error.code == 429) { // 425 Too Early or 429 Too Many Requests NSInteger retryAfter = [responseHeaders[@"Retry-After"] integerValue] ?: DEFAULT_RETRY_AFTER_SECONDS; @@ -387,7 +387,7 @@ - (void)fetchInAppMessagesWithoutToken:(NSString *)subscriptionId { } }); } onFailure:^(OneSignalClientError *error) { - [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"getInAppMessagesFromServer failure: %@", error.underlyingError.localizedDescription]]; + [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"getInAppMessagesFromServer failure: %@", error.description]]; }]; } diff --git a/iOS_SDK/OneSignalSDK/OneSignalLiveActivities/Source/OneSignalLiveActivitiesManagerImpl.swift b/iOS_SDK/OneSignalSDK/OneSignalLiveActivities/Source/OneSignalLiveActivitiesManagerImpl.swift index 95c381bc1..88de28f25 100644 --- a/iOS_SDK/OneSignalSDK/OneSignalLiveActivities/Source/OneSignalLiveActivitiesManagerImpl.swift +++ b/iOS_SDK/OneSignalSDK/OneSignalLiveActivities/Source/OneSignalLiveActivitiesManagerImpl.swift @@ -171,7 +171,7 @@ public class OneSignalLiveActivitiesManagerImpl: NSObject, OSLiveActivities { contentState: contentState, pushType: .token) } catch let error { - OneSignalLog.onesignalLog(.LL_DEBUG, message: "Cannot start default live activity: " + error.localizedDescription) + OneSignalLog.onesignalLog(.LL_DEBUG, message: "Cannot start default live activity: \(error)") } }