我开发了一个用于看电视的应用程序,我们公司拥有仅在一个国家内提供服务的许可 因此,要求是获取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]);
}
如何解决这个问题?请帮忙。
提前谢谢。