Feature Request - MDM Settings Deployment

Alfredo Moreno6 years ago

This is more of a wish list. We currently use Meraki's MDM to manage our iDevices. Within that MDM is a means to deploy specific values to keys. This website goes into it more depth: https://documentation.meraki.com/SM/Profiles_and_Settings/Using_the_Managed_App_Settings_Payload

The settings that can be modified are provided by a .plist file. I managed to locate the .plist file for Traccar that has the settings we'd like to deploy here: https://github.com/tananaev/traccar-client-ios/blob/master/TraccarClient/InAppSettings.bundle/Root.plist

The problem is that all the keys we'd like to modify all have the same name, "DefaultValue". Would it be possible to change the layout of the .plist so all the key names are unique? For example, "DefaultValueDeviceIdentifier", "DefaultValueServiceURL", etc. Or is there another way I'm completely missing that we can use to deploy these settings?

Thanks in advance for your help with this! Traccar has been an incredible asset for our organization.

Alfredo

Anton Tananaev6 years ago

I think you misunderstand something. It's a standard file format from Apple. Of course I can't modify its layout, but I don't see any reason to modify it. Each parameter has its own default value.

Alfredo Moreno6 years ago

Thank you for your response. Let's dive in a bit.

Meraki is expecting the following .plist format within an app that is manageable. Below shows a Key of "foo" with a boolean value of True, and a key of "bar" with a string value of "heyi-amal-icen-seke-yfor-apps". Note the key values are unique, "foo" and "bar".

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
    <key>foo</key>
    <true/>
    <key>bar</key>
    <string>heyi-amal-icen-seke-yfor-apps</string>
    </dict>
</plist>  

So for Traccar to be manageable, Meraki would be expecting something similar to this. Below is an example of a key of "ServerURL" with a string value of "http://demo.traccar.org:5055" and a key of "Frequency" with a string value of "300". Note the key values of "ServerURL" and "Frequency" are unique.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
    <key>ServerURL</key>
    <string>http://demo.traccar.org:5055</string>
    <key>Frequency</key>
    <string>300</key>
    </dict>
</plist>  

However, looking at the current .plist for Traccar, it would appear that there is a separate <dict></disct> for each value, with the title of each value being "DefaultValue". These key names are not unique. I've removed superfluous settings for clarity:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>DefaultValue</key>
            <string>http://demo.traccar.org:5055</string>
        </dict>
        <dict>
            <key>DefaultValue</key>
            <string>300</string>
        </dict>
    </array>
</dict>

Do you see that the name "DefaultValue" is referenced multiple times, making it impossible to differentiate between those values when deploying these settings via an MDM?

Maybe I'm referencing the wrong .plist that Traccar uses to reference the values for these fields?

Thank you for your help with this! It would be fantastic to simply deploy our server URL to our iDevices without having to configure each device manually, one by one.

Alfredo

Anton Tananaev6 years ago

Well, you omitted some important things in your Traccar example. Here is what it really looks like:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>DefaultValue</key>
            <string>http://demo.traccar.org:5055</string>
            ...
            <key>Key</key>
            <string>server_url_preference</string>
        </dict>
        <dict>
            ...
            <key>DefaultValue</key>
            <string>300</string>
            ...
            <key>Key</key>
            <string>frequency_preference</string>
        </dict>
        ...
    </array>
</dict>
</plist>

As you can see, each dict element has both key and default value.

Alfredo Moreno6 years ago

Thank you again for your response.

Meraki expects a unique referable key, which then has a corresponding string (or boolean or whatever) value specified by us

so for Traccar, Meraki expects <key> = "server_url_preference" and string = "http://demo.traccar.org:5055"

The current .plist for Traccar does not have unique names for its keys. There is currently no way to specifically reference a uniquely named key in order to specify a value.

Thank you again for your help!

Alfredo

Anton Tananaev6 years ago

Unfortunately there is no way to change format because, as I mentioned earlier, it's a standard Apple format for settings.

Alfredo Moreno6 years ago

Thank you again for you response.

Hopefully in the future there will be a version of the Traccar Client that would allow management through MDMs. Perhaps a paid version of the Traccar Client geared towards mid to large size enterprises? Being able to quickly deploy these settings through a centralized console would save plenty of staff time.

Thank you again for your help! Cheers

Alfredo

Anton Tananaev6 years ago

If you are happy to pay, we can create a custom version for you. Send an email to discuss it if you are interested.

Adrian6 years ago

How much will be for a custom version??

Anton Tananaev6 years ago

I haven't done any estimations because I haven't received any emails yet.

Alfredo Moreno6 years ago

We've paused on this part of the project until we complete some related tasks. Thank you.

Alfredo

Adrian6 years ago

What emails are you talking about?

Anton Tananaev6 years ago

Have you actually read the thread before posting?

Adrian6 years ago

Alfredo we download the traccar client source and working to have all settings fixed except the device identifier, but we added a unique value identifier. Now we are changing the source to don't let the users to change the values. If you are interesting on this source or want a custom version, let me know, we can help you with that. send me an email: [redacted] (hablo espanol))