Reputation: 139
We have an iOS MDM setup done. Currently when a push notification is sent to APNs with valid PushMagic and DeviceToken. The device responds back with the device status for the command to be executed.
Scenario 1: Say the device was factory resetted (using Erase All Content and Settings). As it was factory reset it does not perform CheckOut and does not call the MDM server.
Scenario 2: Say the mdm profile was Removed manually by the user when the mdm server was not up and running or when the device wifi or 3G connections were not active. This time as well it does not call the mdm server for performing CheckOut.
Scenario 3: MDM server sends an EraseDevice Command and the device is erased to factory as Scenario 1. (though here it does Acknowledge the command and we can handle this on the mdm server side after acknowledgement) but still wanted to list this scenario out.
All these Scenarios deal with removal of MDM profile when the device did not contact the MDM Server for CheckOut.
Is there any way in Java we can track whether the MDM profile is present and still installed on the device.
Trial: I tried using the feedback method provided by JavaPNS which contacts APNs to get all the inactive devices; but no luck. The response to it was empty and when i tried to send push notification with the PushMagic and DeviceToken saved for the device. APNs did not respond with any error.
APNs somehow delivered the notification somewhere.
This is an important aspect of implementation as it may hamper devices which are not currently in active with the mdm server.
Hope I have made myself clear.
Please help.
Thanks.
Upvotes: 0
Views: 350
Reputation: 23288
MDM documentation has an article which is called "Detecting Inactive Device" and "Using the Feedback Service'.
Generally it boils down to following
1) Use APNS feedback services to detect that token became invalid (which means that there is no more MDM profile on a device). However, it's not reliable (per documentation).
2) Send periodic push notifications to a device and if it didn't respond for some period of time then you should treat it as inactive.
Upvotes: 1