Skip to content

[iOS] Get store locale country code #300

@jonluca

Description

@jonluca

Why it is needed?

It would be nice if this library exposed the iOS countryCode for the App Store, as this can change the localization of content as well.

Something like https://developer.apple.com/documentation/storekit/storefront/countrycode

Possible implementation

import Foundation
import React
import StoreKit

@objc(AppStoreRegion)
class AppStoreRegion: NSObject {
  
  @objc
  static func requiresMainQueueSetup() -> Bool {
    return false
  }
  
  @objc
  func getAppStoreRegion(_ resolve: @escaping RCTPromiseResolveBlock,
                        rejecter reject: @escaping RCTPromiseRejectBlock) {
    
    // Get the actual App Store storefront country code
    if let countryCode = SKPaymentQueue.default().storefront?.countryCode {
      resolve(countryCode)
    } else {
      // Fallback to device locale if storefront is unavailable
      let fallbackCode = Locale.current.regionCode ?? "US"
      resolve(fallbackCode)
    }
  }
}
#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(AppStoreRegion, NSObject)

RCT_EXTERN_METHOD(getAppStoreRegion:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)

@end

Code sample

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions