Я работаю с дроном 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 Code = -1013 \ "Текущий продукт не поддерживает эту функцию. (Код: -1013) \"
Рассматриваемый API находится здесь: https://developer.dji.com/api-reference/ios-api/Components/IntelligentFlightAssistant/DJIIntelligentFlightAssistant.html?search=precision&i=0djiintelligentflightassistant_setprecisionlineingenable
Я проверил, и нет никаких параметров, переданных при вызове "взлета", который связан с точной посадкой. Итак, почему я получаю эту ошибку, когда знаю, что у дрона есть эта функция (что подтверждено собственным приложением DJI)? Должен ли дрон сначала лететь, прежде чем включить это? Или есть другие условия, которые должны быть выполнены, прежде чем я смогу включить это?