4

I am developing an iOS app for Phantom 4 Pro, using the DJI SDK for iOS.

In my app, I need to ensure that my user's entire private data, such as Photos, Videos, Location, Flight plan, etc should remain local, and should not get shared to anyone without user's discretion.

For achieving this, I went through the API Reference, and found the class DJILDMManager, which mentions that by enabling the local data mode, the most appropriate for users that have very stringent data requirements.

Here, I need to know what minimal information could still get shared to DJI (or anywhere else), when I have the Local Data Mode Enabled.

More Information Even with Local Data Mode (LDM) enabled successfully, I have observed the following network requests from the app for creating HTTP tunnels:

  • CONNECT mydjiflight.dji.com:443 HTTP/1.1
  • CONNECT active.dji.com:443 HTTP/1.1
  • CONNECT api.dji-services.com:443 HTTP/1.1
  • CONNECT flysafe-api.dji.com:443 HTTP/1.1

I would appreciate your inputs regarding these requests, as I am not sure if they are capturing drone's data, but app does seems to reach out for DJI servers in LDM enabled mode.

iCoder
  • 67
  • 5

2 Answers2

3

With LDM enabled (make sure to check first if supported in your region) the only communication that will go through to our servers is the registration.

Registration sends basic statistical information such as device type and verifies that the app key used is valid. This happens once with our server and is then cached locally. It may happen again after if the cache is not usable, but only once per app launch.

Registration doesn't send Photos, Videos, Location or Flight plans.

Nothing else is sent after LDM is activated.

Keep in mind that with LDM on, you won't get many of the online features including updated GEO features.

  • Thanks for the inputs. However, even with LDM enabled, I have seen the HTTP connect requests for creating tunnels being sent over to DJI servers. I have appended the observed requests in my question itself. – iCoder Jan 12 '18 at 05:57
  • I am also stuck on the same issue. Please suggest. – maveroid Jan 15 '18 at 11:07
  • This may happen if you enable LDM before checking it is supported. For instance, some countries do not allow LDM to be enabled. Please make sure LDM is supported using the notifications first. – Arnaud Thiercelin Jan 22 '18 at 22:50
3

To monitor the status of LDM becoming supported listen to the notification that LDM Manager posts when the supported status changes. From here you can then enable LDM and continue on with the workflow of your app. Note that until LDM is enabled you may still see networking requests and after LDM enables you may see one request for registration.

[[NSNotificationCenter defaultCenter] addObserverForName:DJILDMManagerSupportedChangedNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
    if([[DJISDKManager ldmManager] isLDMSupported]) {
        if (![[DJISDKManager ldmManager] enableLDM]) {
            NSLog(@"LDM Enabled");
        } else {
            NSLog(@"LDM Disabled");
        }
    } else {
        NSLog(@"LDM Not Supported");
    }
}];
RussFenenga
  • 181
  • 5
  • Using the latest SDK (4.13) All I get back is this error when I call getIsLDMSupported, or enableLDM: ERROR: Optional(Error Domain=DJILDMErrorDomain Code=-12000 "The drone is not connect(code:-12000)" UserInfo={NSLocalizedDescription=The drone is not connect(code:-12000)}). I don't think LDM is working anymore. It's the same error whether I plug a drone in, or not. – Shoerob Oct 30 '20 at 23:19