【问题标题】:Is it possible to get location within iOS framework?是否可以在 iOS 框架中获取位置?
【发布时间】:2015-07-16 02:17:14
【问题描述】:

我已经在 swift 中创建了一个框架。但我试图在框架内获取位置值 - 纬度和经度。以下代码编译良好,但未填充位置值。我已经在 info.plist 中添加了 NSlocationWheninUseUSageDescription 键。

有人能告诉我是否可以在框架内获取位置值?如果是,那么这里应该怎么做?

注意:如果添加到主应用程序的 ViewController 类中,此代码可以正常工作。但是,如果将此代码添加到框架并从那里调用,则用户不会收到授权消息。

import Foundation
import CoreLocation


public class FrameworkInit : NSObject, CLLocationManagerDelegate {


var locationManager = CLLocationManager()
var lat = ""
var long = ""
var locflag = false
var _appKey = ""

func fetchLocation()
{
    println("fetch loc called....")
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.requestWhenInUseAuthorization()
    locationManager.startUpdatingLocation()
}

public func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!)
{
    var locValue:CLLocationCoordinate2D = manager.location.coordinate
    lat = locValue.latitude.description
    long = locValue.longitude.description
    println("lat.....\(lat)   \nlong...... \(long)")
    self.locationManager.stopUpdatingLocation()
    if !locflag {

        SPDeviceRegister().saveDataOnDevice(_appKey, lat: lat, long: long)

        SPReceiver().thresholdValueSetter()

    }
    locflag = true
}

 public func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
{
    println("Error:" + error.localizedDescription)
    if !locflag {

        SPDeviceRegister().saveDataOnDevice(_appKey, lat: "0.0", long: "0.0")

        SPReceiver().thresholdValueSetter()
    }
    locflag = true
}


public init(appKey: String)
{
    super.init()
    _appKey = appKey
    self.fetchLocation()
}
}

【问题讨论】:

  • 即使你正在构建一个框架,你仍然需要获得用户的授权才能获取位置。您的框架是否发布了一些方法来管理所需的CLLocationManager 授权(和可用性)?
  • 虽然我是 iOS 开发的新手,但是如果添加到主应用程序的 ViewController 中,这段代码可以正常工作。 locationManager.requestWhenInUseAuthorization() 将使用 info.plist 文件中键 NSLocationWhenInUseUsageDescription 的值自动请求用户授权。但是在将代码添加到框架后,用户没有收到授权消息。

标签: ios swift frameworks core-location


【解决方案1】:

终于找到了可行的解决方案。

虽然对于您的场景,实现可能会有所不同,但请看一下这个示例。感谢项目的所有者。

https://github.com/icanzilb/OneShotLocationManager

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多