2017-11-04 42 views

回答

0

將您的場地位置保存在您的應用程序或服務器端。然後嘗試通過獲取他們的位置大約100毫秒或您選擇的半徑來跟蹤用戶。

添加CoreLocation.framework到BuildPhases - >鏈接二進制與圖書館(不再需要爲7.2.1的XCode的)

進口CoreLocation到你的類 - 可能ViewController.swift

添加CLLocationManagerDelegate上您的課聲明

添加NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription到PList INIT位置經理:

locationManager = CLLocationManager() 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 
locationManager.requestAlwaysAuthorization() 
locationManager.startUpdatingLocation() 
get User Location By: 
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    var locValue:CLLocationCoordinate2D = manager.location.coordinate 
    print("locations = \(locValue.latitude) \(locValue.longitude)") 
} 

看看這個Tracking Location

+0

提供假的位置信息將非常容易。 –

1

簡短和通用的答案是你不能真的這樣做,但請繼續閱讀。

您需要回答的問題與您想要保護您的應用的方式不符,您試圖減輕的威脅是什麼。

您可以在移動應用程序中構建任何保護(例如其他答案中的保護),但請記住客戶端完全由用戶控制。例如,用戶可能僞造應用程序的位置座標(請參閱Pokemon Go),在仿真器或實際設備中執行操作非常簡單。或者更容易,用戶可以從任意來源發出請求,而不是您的應用程序。服務器請求必須包含用戶的位置 - 但用戶可以發送任何他想要的內容。總而言之,客戶端上的任何內容都完全由用戶控制。

因此,這導致服務器端保護作爲實際安全解決方案(合理難以規避的解決方案)的唯一方式。如果客戶端告訴服務器,服務器知道客戶端的物理位置的唯一來源 - 但我們上面已經看到這是不可靠的。

但是,有一件事客戶端不能合理假冒(至少不容易),那就是客戶端IP地址。因此,爲防止用戶不在場內使用您的服務,您可以做的唯一事情就是將其鎖定在網絡級別上,例如,您的API服務器應僅可從IP範圍場地提供(大概是本地地址範圍,或者如果您的API在雲中,則是公共IP地址或場地的範圍)。