IOS 限制对某些国家或 WLAN 的应用程序的访问

Posted

技术标签:

【中文标题】IOS 限制对某些国家或 WLAN 的应用程序的访问【英文标题】:IOS restrict access to App for certain Country or WLAN 【发布时间】:2020-07-08 10:05:18 【问题描述】:

我想开发一款仅在德国提供的应用。 如果用户下载该应用程序并离开德国,它最好不再工作。这可能吗? 由于我只想知道用户当前所在的国家/地区,因此我不想询问整个位置。

此外,我想将某些内容限制在特定的 WLAN 网络中。我该怎么做?

【问题讨论】:

将应用限制在某个国家的应用商店就够了吗? 我猜不是因为如果用户离开他下载它的国家/地区,该应用程序仍将运行。对吗? 是的,它会的。我会检查我还能找到什么 【参考方案1】:

很遗憾,地标级别没有内置地理坐标。

您可以使用 region monitoring,但这需要将德国的边界重新构建为(最多 20 个)CLCircularRegion 对象。之后,您只需让核心位置框架通知您区域是否发生变化。

缺点是您只能使用 20 个圆形区域来覆盖德国区域,因此您会损失一点精度。

第二种解决方案是使用基于计时器的检查:

获取当前用户位置 使用CLGeocoder.reverseGeocodeLocation,它将提供CLPlacemark.country 检查我们是否还在德国

【讨论】:

【参考方案2】:

你可以使用:

NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];

获取用户的国家代码。德国的国家代码是 DE。

然后您可以检查用户的国家/地区代码,如果不是 DE,则通过显示应用已锁定或类似内容的屏幕来锁定应用。

对于您问题的 WLAN 部分,您可以获得用户连接到的网络的名称:

How to get available all wifi network name Listing in ios using swift

此类将仅显示您连接的 wifi 网络名称 -

    import UIKit
    import SystemConfiguration.CaptiveNetwork

    class ViewController: UIViewController 
    
        @IBOutlet weak var label: UILabel!
    
        override func viewDidLoad()
            super.viewDidLoad()
            let ssid = self.getAllWiFiNameList()
            print("SSID: \(ssid)")
        
        func getAllWiFiNameList() -> String? 
            var ssid: String?
            if let interfaces = CNCopySupportedInterfaces() as NSArray? 
            for interface in interfaces 
            if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? 
                        ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
                        break
                    
                
            
            return ssid
        
    

您可以检查该类是否不等于预设的类以阻止某些功能。

【讨论】:

感谢解答,但是NSLocale并没有返回iphone当前所在的国家,它只返回语言设置的国家 @Neli 是的,let locale = Locale.current 怎么样?然后使用locale? 这也只是设置语言代码,不是当前位置

以上是关于IOS 限制对某些国家或 WLAN 的应用程序的访问的主要内容,如果未能解决你的问题,请参考以下文章

将 iOS 应用程序的可用性限制在一个国家/地区

如何限制对当前文件的某些功能或对象的访问?

使用 FolderBrowserDialog 限制对某些文件夹的访问

iOS 对直播的要求

IOS:设备语言的日期格式

WLAN 直连(对等连接或 P2P)调研及 iOS 跨平台调研