DJI Mobile SDK Documentation

      class DJIAppActivationManager

      @interface DJIAppActivationManager : NSObject
      Header:DJIAppActivationManager.h
      Inherits From:NSObject
      Description:

      DJI aircraft firmware require mobile applications that control DJI aircraft to be activated with the user's DJI account, if that application is being used in China. This will ensure operators use the correct set of geospatial information and flight functions for their aircraft, as determined by their geographical location and user profile.

      A summary of the activation system is:

      - Users in China are required to activate their application by logging into their DJI account at least once every three months within the application
      - Activation will be persistent in the application until the user logs out
      - A data connection will be required to log into a DJI account
      - Outside of China, the SDK will automatically activate the application without requiring the user to log in
      - Additionally, users in china are required to bind their aircraft to their user account in DJI Go. This is required only once.

      If an application is not activated, the aircraft not bound (if required), or a legacy version of the SDK (<4.1) is being used, all camera live streams will be disabled, and flight will be limited to a cylinder of 100m diameter and 30m height to ensure the aircraft stays within line of sight.

      This class is used to check the state of application activation and aircraft binding.

      Class Members:
      State Updates
      property
      property delegate
      @property (nonatomic, weak) id<DJIAppActivationManagerDelegate> delegate
      Header:DJIAppActivationManager.h
      Description:

      Delegate to receive the state update.

      See Also:

      DJIAppActivationManagerDelegate

      Information
      property
      property appActivationState
      @property (nonatomic, readonly) DJIAppActivationState appActivationState
      Header:DJIAppActivationManager.h
      Description:

      Current App Activation state.

      See Also:

      DJIAppActivationState

      property aircraftBindingState
      @property (nonatomic, readonly) DJIAppActivationAircraftBindingState aircraftBindingState
      Header:DJIAppActivationManager.h
      Description:

      Current aircraft binding state. Users in China need to bind additional account details with the aircraft one-time through DJI Go. These details need to be bound and the application needs to be activated by logging into their DJI Go account to lift the flight restrictions.

      See Also:

      DJIAppActivationAircraftBindingState

      enum DJIAppActivationAircraftBindingState
      typedef NS_ENUM (NSUInteger, DJIAppActivationAircraftBindingState)
      Header:DJIAppActivationSystemTypes.h
      Description:

      The aircraft's binding state.

      Enum Members:
      DJIAppActivationAircraftBindingStateInitialThe binding state of the aircraft is not yet determined. The aircraft will only be in this state until DJI Go or a DJI Mobile SDK based application rights the binding information to the aircraft. Binding is only required if the user is in China. If the user is not in China, then this state will become DJIAppActivationAircraftBindingStateNotRequired after the country code check is complete. If country code check has been disabled, the user will need to use DJI Go to move to the DJIAppActivationAircraftBindingStateNotRequired state. In this state, the aircraft will have the 30m height and 50m radius limitation.
      DJIAppActivationAircraftBindingStateUnboundThe aircraft is not currently bound, and needs to be (as it is in China). In this state, the aircraft will have 30m max flight height and 50m max flight distance limitation. User should finish the one-off binding process with DJI Go to remove the flight limitation.
      DJIAppActivationAircraftBindingStateUnboundButCannotSyncThe aircraft is flying inside China and is unbound. The aircraft can be bound using DJI Go. If DJI Go is connected to the aircraft, then the binding will be stored in the aircraft. If DJI Go is not connected to the aircraft during the binding process, then the binding result will be stored on a server. The SDK can query this server to see if the binding has already happened, and if it has, download the binding to the aircraft. However, if the aircraft is unbound, and the server is not reachable, then this state will be presented. The user should connect the mobile device to the Internet to refresh this state.
      DJIAppActivationAircraftBindingStateBoundThe aircraft is bound.
      DJIAppActivationAircraftBindingStateNotRequiredThe aircraft is not bound but it is not currently located in China. Therefore, binding the aircraft is not required.
      DJIAppActivationAircraftBindingStateNotSupportedThe aircraft's firmware does not support the App Activation system.
      DJIAppActivationAircraftBindingStateUnknownEither the aircraft is disconnected or the connected product is not a DJI aircraft.
      enum DJIAppActivationState
      typedef NS_ENUM(NSInteger, DJIAppActivationState)
      Header:DJIAppActivationSystemTypes.h
      Description:

      The App Activation state.

      Enum Members:
      DJIAppActivationStateNotSupportedThe aircraft's firmware does not support the App Activation System.
      DJIAppActivationStateLoginRequiredThe application needs to be activated by the user through their DJI account. Use DJIUserAccountManager to enable the user to log in. Log in is only required if the aircraft is located in China.
      DJIAppActivationStateActivatedThe application is activated and flight restrictions turned off.
      DJIAppActivationStateUnknownEither the aircraft is disconnected or the connected product is not a DJI aircraft.
      protocol DJIAppActivationManagerDelegate
      @protocol DJIAppActivationManagerDelegate <NSObject>
      Header:DJIAppActivationManager.h
      Inherits From:NSObject
      Description:

      This protocol provides delegate methods to receive the updated state related to activation of the application.

      Protocol Methods:

      Protocol Method

      method manager:didUpdateAppActivationState
      @optional
      -(void)manager:(DJIAppActivationManager *)manager didUpdateAppActivationState:(DJIAppActivationState)appActivationState
      Header:DJIAppActivationManager.h
      Description:

      Called when the App Activation state changes.

      Input Parameters:
      DJIAppActivationManager * managerThe App Activation manager that updates the current state.
      DJIAppActivationState appActivationStateThe App Activation state. Use this state to check if login is required to unrestrict the flight limitation.
      method manager:didUpdateAircraftBindingState
      @optional
      -(void)manager:(DJIAppActivationManager *)manager didUpdateAircraftBindingState:(DJIAppActivationAircraftBindingState)aircraftBindingState
      Header:DJIAppActivationManager.h
      Description:

      Called when the App Activation manager updates the aircraft binding state.

      Input Parameters:
      DJIAppActivationManager * managerThe App Activation manager that updates the current state.
      DJIAppActivationAircraftBindingState aircraftBindingStateThe aircraft binding state. Use this state to check if it is required to use DJI Go to bind the aircraft.