我想知道是否有解决方案可以找出用户下载应用程序的国家/地区。
例如:当用户打开应用程序时,app x已在美国下载,应用程序将检查下载的国家/地区。在此示例中,返回将是“USA”
有没有人想过如何解决这个问题?
答案 0 :(得分:8)
如果您有任何应用内购买,您可以从SKProduct中读取区域设置。作为后备,请使用设备的区域设置。
NSLocale *locale;
SKProduct *baseProduct = nil; // replace as applicable
if (baseProduct) {
locale = baseProduct.priceLocale; // from the user's credit card on iTunes
} else {
locale = [NSLocale currentLocale]; // from user preferences
}
NSString *countryCode = [locale objectForKey:NSLocaleCountryCode];
NSLog(@"Two-letter country code: %@", countryCode);
答案 1 :(得分:3)
iTunes商店所在国家/地区与用户设置的区域设置之间可能存在足够的相关性。这取决于您的需求 - 如果这还不够,我认为没有办法知道从哪个实际商店下载应用程序。
要检索该区域设置,您可以使用:
NSString *localeIdentifier = [[NSLocale currentLocale] localeIdentifier];
希望这足以满足您的需求。
答案 2 :(得分:0)
无法检查应用程序的“哪个”App Store已下载。
如果你需要做任何基于位置的操作,你应该查看CLLocation
以获取用户的当前位置,但是如果应用程序询问用户他们的位置可能会有什么干扰,如果它不明显为什么呢需要这个位置。
您还可以检查用户设备上的语言,例如en_gb for Britain,dk for Denmark,en_ca for Canada等。虽然这并不能完全涵盖某些国家/地区的用户将语言设置为其他语言的情况比起国家的母语,它总比没有好。
答案 3 :(得分:0)
SKStoreFront
似乎可以胜任。
快速
if let storefront = SKPaymentQueue.default().storefront {
print(storefront.countryCode) // Returns an Alpha-3 country code (USA, GBR etc.)
}
Obj C
[SKPaymentQueue defaultQueue].storefront.countryCode; // Returns an Alpha-3 country code (USA, GBR etc.)
即使您的应用程序不提供任何购买,您也应该可以通过将StoreKit框架添加到项目中来访问SKStoreFront
实例。