DESCRIPTION:
An iOS app - (WhatsApp Business) is not getting updated in device when update is deployed. The InstallApplication command is sent to device successfully and it is Acknowledged but the app is not updating. On analyzing the device logs in console we are getting the error- ["This installation was canceled by the user." UserInfo={NSLocalizedFailureReason=User canceled., NSLocalizedDescription=This installation was canceled by the user] for the app. This is a supervised device and app was not open in foreground too. So ideally the app should update silently without any user interruption but it says that user cancelled. There is no prompt in device too. We are unable to remove and re-install the app since app data will be lost.
HOW TO REPRODUCE:
-
Enroll a iOS device in MDM.
-
Deploy a VPP App Store App using MDM to the device.
-
Wait for an update in App Store and then deploy the update to device of the same VPP App Store app from MDM.
EXPECTED RESULT:
- The app should be updated in device.
ACTUAL RESULT:
- The app is not updated in device. (Error found in device - This installation was canceled by the user] for the app)
InstallApplication Command From MDM:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>InstallApplication;Collection=51084000003072065</string>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>InstallApplication</string>
<key>iTunesStoreID</key>
<integer>1386412985</integer>
<key>InstallAsManaged</key>
<true/>
<key>ManagementFlags</key>
<integer>5</integer>
<key>Options</key>
<dict>
<key>PurchaseMethod</key>
<integer>1</integer>
</dict>
<key>ChangeManagementState</key>
<string>Managed</string>
</dict>
</dict>
</plist>
InstallApplication Response From Device
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>InstallApplication;Collection=51084000003072065</string>
<key>Identifier</key>
<string>net.whatsapp.WhatsAppSMB</string>
<key>State</key>
<string>Managed</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>*****</string>
</dict>
</plist>
Kindly help us with this case.