获取 iPhone 实际所在的国家/地区(无需 CLLocationManager)

问题描述 投票:0回答:1

我开发了一款看电视的应用程序,我们公司拥有仅在一个国家/地区提供服务的许可证。
因此,要求是获取 iPhone 当前实际所在的国家/地区。

我一直在StackOverflow上寻找答案,发现了一些很棒的主题,但它们并不完全满足这个案例的要求:

在 iOS 中获取设备位置(仅限国家/地区) - 在我们的情况下使用 CLLocationManager 是不可接受的,因为它需要用户始终保持地理定位服务,耗尽手机电池,并且我们需要请求用户的适当许可。

从 iPhone 设备查找当前国家/地区 - 在我们的情况下使用 NSLocale 是不可接受的,因为它只提供用户选择手机的设置,它可能与 iPhone 当前实际所在的国家/地区不同。

iOS如何查找用户电话号码的国家代码? - 我们尝试使用CTCarrier,测试了它向国外发送SIM卡:CTCarrier返回的是SIM卡发出的国家代码,而不是国家代码iPhone 当前实际所在的位置。

iPhone 中的漫游状态 - 我发现的唯一可行的解决方案是检测漫游状态,但它使用未记录的系统文件,所以我担心如果我使用此应用程序可能会被 App Store 拒绝:

static NSString *carrierPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.carrier.plist";
static NSString *operatorPListSymLinkPath = @"/var/mobile/Library/Preferences/com.apple.operator.plist";

- (BOOL)isRoaming
{
    NSFileManager *fm = [NSFileManager defaultManager];
    NSError *error;
    NSString *carrierPListPath = [fm destinationOfSymbolicLinkAtPath:carrierPListSymLinkPath error:&error];
    NSString *operatorPListPath = [fm destinationOfSymbolicLinkAtPath:operatorPListSymLinkPath error:&error];

   return (![operatorPListPath isEqualToString:carrierPListPath]);
}

如何解决这个问题?请帮忙。
预先感谢。

ios objective-c
1个回答
1
投票

您可以通过IP地址获取当前所在国家/地区。

© www.soinside.com 2019 - 2024. All rights reserved.