无法通过api调用

时间:2018-03-07 22:51:38

标签: swift dji-sdk

我正在使用具有精确着陆能力的Phantom 4 Pro无人机。我正在使用Swift和iPad来控制无人机。在DJI Go软件中,我可以启用它,它可以正常工作。但是,在我正在处理的应用程序中,任何启用它的调用都会失败。

这是尝试启用它的代码:

static func setPrecisionLandingEnabled(precisionLandingEnabled: Bool, _ completeFunction: @escaping (Error?) -> Void) throws {
    guard let djiKeyManager = DJISDKManager.keyManager() else {
        GLog.Log("Error in Flight Controller Observer. Problem getting djiKeyManager in \(#file) \(#function)")
        throw FlightControllerManager.FlightControllerError.cantGetKeyManager
    }

    guard let precisionLandingEnabledKey = DJIFlightControllerKey(param: DJIFlightAssistantParamPrecisionLandingEnabled) else {
        GLog.Log("Error in Flight Controller Observer. Problem getting precisionLandingEnabledKey in \(#file) \(#function)")
        throw FlightControllerManager.FlightControllerError.cantGetKey
    }

    djiKeyManager.setValue(precisionLandingEnabled, for: precisionLandingEnabledKey, withCompletion: completeFunction)
}

当我调用该函数时,DJI SDK的完成功能返回以下错误:

  

错误域= DJISDKErrorDomain代码= -1013 \“当前产品没有   支持此功能。(代码:-1013)\“

有问题的API可在此处找到:https://developer.dji.com/api-reference/ios-api/Components/IntelligentFlightAssistant/DJIIntelligentFlightAssistant.html?search=precision&i=0&#djiintelligentflightassistant_setprecisionlandingenabled_inline

我查了一下,在发出与精确着陆有关的“起飞”调用时没有传入任何参数。那么,当我知道无人机具有此功能(由DJI自己的应用程序验证)时,为什么会出现此错误?在启用此功能之前,无人机是否必须首先飞行?或者在启用此功能之前是否还有其他必须满足的条件?

1 个答案:

答案 0 :(得分:0)

在我看来,您应该创建一个DJIFlightAssistant对象,然后使用现有方法setPrecisionLandingEnabled(_: Bool, completion: DJICompletionBlock)

为什么要编写自己的setPrecisionLandingEnabled()方法?