Open apizz opened 4 years ago
Yuck ... so the Pages
key is an array
of an array of dictionaries
... the reason for this is that every array within with the Pages
array is treated as a separate page.
ProfileCreator doesn't really support this formatting ... you can get a blank array within an array, but then you don't get any of the contained dictionary preferences listed. So we can help admins get part of the way there, but not completely ... at least with regards to preferences on different pages and/or pages within folders.
ProfileCreator Example w/ Array of Array of Dictionaries
vs. formatted as array of dictionaries
Actual format
<key>Dock</key>
<array>
<!-- Dock App 1 -->
<dict>
<key>BundleID</key>
<string>com.apple.Pages</string>
<key>DisplayName</key>
<string>Pages</string>
<key>Type</key>
<string>Application</string>
</dict>
<!-- Dock Folder 1 -->
<dict>
<key>DisplayName</key>
<string>DockFolder</string>
<key>Pages</key>
<!-- vv array of array of dictionaries AKA Dock Folder Page 1 vv -->
<array>
<!-- Dock Folder 1 - Page 1 - App 1 -->
<array>
<dict>
<key>BundleID</key>
<string>com.apple.Numbers</string>
<key>DisplayName</key>
<string>Numbers</string>
<key>Type</key>
<string>Application</string>
</dict>
</array>
<!-- Dock Folder 1 - Page 2 - App 1 -->
<array>
<dict>
<key>BundleID</key>
<string>com.apple.Numbers</string>
<key>DisplayName</key>
<string>Numbers</string>
<key>Type</key>
<string>Application</string>
</dict>
</array>
</array>
<key>Type</key>
<string>Folder</string>
</dict>
<!-- Dock App 2 -->
<dict>
<key>BundleID</key>
<string>com.apple.mobilephone</string>
<key>DisplayName</key>
<string>Phone</string>
<key>Type</key>
<string>Application</string>
</dict>
</array>
<key>Pages</key>
<array>
<!-- App Page 1 array -->
<array>
<!-- App Page 1 - App 1 -->
<dict>
<key>BundleID</key>
<string>com.thetileapp.tile</string>
<key>DisplayName</key>
<string>Tile - Find lost keys & phone</string>
<key>Type</key>
<string>Application</string>
</dict>
<!-- App Page 1 - Folder 1 -->
<dict>
<key>DisplayName</key>
<string>Page1Folder</string>
<key>Pages</key>
<array>
<!-- App Page 1 - Folder 1 - Page 1 -->
<array>
<!-- App Page 1 - Folder 1 - Page 1 - Web Clip 1 -->
<dict>
<key>DisplayName</key>
<string>WebClipPage1Folder</string>
<key>Type</key>
<string>WebClip</string>
<key>URL</key>
<string>https://google.com</string>
</dict>
<!-- App Page 1 - Folder 1 - Page 1 - App 1 -->
<dict>
<key>BundleID</key>
<string>com.google.chrome.ios</string>
<key>DisplayName</key>
<string>Google Chrome</string>
<key>Type</key>
<string>Application</string>
</dict>
</array>
</array>
<key>Type</key>
<string>Folder</string>
</dict>
</array>
<!-- Home Page 2 array -->
<array>
<!-- App Page 2 - App 1 -->
<dict>
<key>BundleID</key>
<string>com.google.GoogleMobile</string>
<key>DisplayName</key>
<string>Google</string>
<key>Type</key>
<string>Application</string>
</dict>
</array>
</array>
@relgit, what do you think?
@apizz just out of curiosity, did you try the com.apple.homescreenlayout manifest.plist from ManifestsToConvert? That manifest is incomplete, and although I doubt this will work with a complete one, it might be worth the shot.
Otherwise, if you want to get admins part of the way like you said and you believe that it's beneficial to them then I say go for it. On my side however we have a few other milestones that we need to reach before we can add such a manifest in a way that we are happy with.
Yeah, Jamf's GUI implementation of this payload is not great ... but it is usable. I always see value of having something available, even if there are special instructions for how to use it.
And I did try that manifest. No luck.
Please provide the following information:
App Name: Home Screen Layout
App URL: N/A
App Profile Documentation URL: https://developer.apple.com/documentation/devicemanagement/homescreenlayout
Payload / Domain: com.apple.homescreenlayout