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

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

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

【问题讨论】:

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

标签: ios localization geolocation


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    你可以使用:

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

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

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

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

    此类将仅显示您连接的 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?
    • 这也只是设置语言代码,不是当前位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多