获取iPhone所在的国家/地区(没有CLLocationManager)

时间:2017-07-18 10:40:56

标签: ios objective-c

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

我一直在寻找StackOverflow的答案,发现了一些很棒的主题,但它们并不完全符合这种情况的要求:

Get device location (only country) in iOS - 在我们的案例中使用 CLLocationManager 是不可接受的,因为它需要用户始终保持地理定位服务,耗尽手机的电量,并且我们要求用户获得适当的许可。

Find current country from iPhone device - 在我们的案例中使用 NSLocale 是不可接受的,因为它仅提供用户选择其手机的设置,它可能与iPhone当前所在的国家/地区不同。

iOS how to find country code of the user's phone number? - 我们尝试使用 CTCarrier ,测试将SIM卡发送到国外:CTCarrier退回了SIM卡发出的国家代码,而不是iPhone的国家/地区代码目前实际位于。

Roaming Status in iPhone - 我发现的唯一可行解决方案是检测漫游状态,但它使用未记录的系统文件,因此我担心如果我使用此应用程序可以拒绝该应用程序:< / p>

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]);
}

如何解决这个问题?请帮忙。
提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以通过IP地址获取当前国家/地区。 您可以获得更多信息there