From f07edcb70b9c2d214b6a9ab01d936e2ddb6db2e2 Mon Sep 17 00:00:00 2001 From: Nan Date: Sat, 17 Jan 2026 13:57:49 -0800 Subject: [PATCH 1/2] fix: use locale-independent formatting for purchase prices - Fixes an issue where purchase amounts were being formatted using the device's locale settings, causing European locales to send "12,99" instead of "12.99". This caused 400 errors from the API and blocked all user property updates. - The fix ensures the NSNumberFormatter uses en_US_POSIX locale, which always uses a period as the decimal separator regardless of device locale. --- iOS_SDK/OneSignalSDK/Source/OneSignalTrackIAP.m | 1 + 1 file changed, 1 insertion(+) diff --git a/iOS_SDK/OneSignalSDK/Source/OneSignalTrackIAP.m b/iOS_SDK/OneSignalSDK/Source/OneSignalTrackIAP.m index 12c13936d..8fe8971c5 100644 --- a/iOS_SDK/OneSignalSDK/Source/OneSignalTrackIAP.m +++ b/iOS_SDK/OneSignalSDK/Source/OneSignalTrackIAP.m @@ -127,6 +127,7 @@ - (void)productsRequest:(id)request didReceiveResponse:(id)response { // SKProduct.price is an NSDecimalNumber, but the backend expects a String NSNumberFormatter *formatter = [NSNumberFormatter new]; + [formatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; [formatter setMinimumFractionDigits:2]; NSString *formattedPrice = [formatter stringFromNumber:[skProduct performSelector:@selector(price)]]; From a2862fb9c511566fef2939082086087ce3917a3b Mon Sep 17 00:00:00 2001 From: Nan Date: Wed, 21 Jan 2026 20:10:18 -0800 Subject: [PATCH 2/2] chore: update xcode ci for failing build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b48290e23..b66852d46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Select Xcode Version run: | - sudo xcode-select -s /Applications/Xcode_16.3.0.app + sudo xcode-select -s /Applications/Xcode_16.4.0.app - name: Checkout OneSignal-iOS-SDK uses: actions/checkout@v3 - name: Set Default Scheme