我正在开发一款用于观看电视节目的应用程序,我们公司拥有提供服务的许可证,但仅限于一个国家内。
因此,要求获取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]);
}
这个问题怎么解决?请帮忙。
非常感谢。