Apologies if this has been asked before, but I am struggling to understand what our options are for app distribution for a new (to our company) use case. Note: we have both an Enterprise account as well as a standard App Store account.
We are developing an Apple Vision app for a client company. We need to be able to distribute the app to people within our company as well as within the client company for testing. Once that is complete, we need to be able to distribute the app to a select group of employees in the client company. The client company does not have an MDM, so we originally thought to distribute the app using TestFlight. But that is not available with our Enterprise account.
Is this something we can manage with a Business account since the devices involved would belong to our client company instead of ours? Is there a different solution to this workflow within the existing tools provided by Apple? Or is the only option to help the client set up an MDM/set up our own MDM to manage client devices for this?
Explore the intersection of business and app development. Discuss topics like device management, education, and resources for aspiring app developers.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Is there a way to check if DDM(Declarative Device Management) is enabled on a device?
In Device management profile,
VPN.VPN.OnDemandRulesElement
Action->Disconnect
Example payload:
OnDemandEnabled1OnDemandRules
ActionDisconnectInterfaceMatchCellular
When install my vpn payload with above configuration, I was unable to connect vpn manually when i try with wifi interface
Based on the doc, VPN should tear down when i connect with specific type interface(here cellular) i was unable to connec the vpn when i'm in cellular network good but when i connect to wifi still the same is happening. Is this a bug? tried in ios 18
Topic:
Business & Education
SubTopic:
Device Management
我有十一台M4芯片的mac mini,目前通过AC2将设备挂载在ABM中。目前有10台通过接口 “https://mdmenrollment.apple.com/device/activationlock” 启用企业激活锁去出现INTERNAL_SERVER_ERROR错误,只有一台成功了,成功那台设备使用的ABM账号与其他设备使用的ABM账号不同所属组织也不同。
I have eleven M4 chip Mac mini devices, currently mounted in ABM through AC2. Currently, there are 10 units that have passed the interface“ https://mdmenrollment.apple.com/device/activationlock ”Enabling the enterprise activation lock resulted in an INTERNAL_SERVER-ERROR error, and only one device succeeded. The successful device used a different ABM account than the other failed devices and belonged to a different organization.
Topic:
Business & Education
SubTopic:
Device Management
Tags:
Apple Business Manager
Device Management
Apple iPad Air device failing to enroll through ABM with "failed to retrieve configuration" error. This error occurs while reaching Apple ABM for fetching MDM server enrollment details. When we checked console logs when enrolling the device we found following error:
default 13:54:07.229022+1000 teslad Error: Error Domain=MCCloudConfigurationErrorDomain Code=34004 "The cloud configuration server is unavailable or busy." UserInfo={NSLocalizedDescription=The cloud configuration server is unavailable or busy., CloudConfigurationErrorType=CloudConfigurationFatalError}
default 13:54:07.229120+1000 Setup Service completed
default 13:54:07.230096+1000 Setup Could not retrieve cloud configuration. Error: <Error domain: MCCloudConfigErrorDomain, code 33001>\
Feedback raised along with screenshot and console logs as well : FB17785513. Please analyse this issue and reply back to us.
Topic:
Business & Education
SubTopic:
Device Management
Tags:
iPad
Apple Business Manager
Device Management
I have created a jwt token with headers
{
'typ': 'JWT',
'alg': 'RS256'
}
and claim as :
{
'iss': dep server UUID from Accounts call,
'iat': epoc time in seconds,
'jti': random uuid,
'service_type': 'com.apple.maid'
}
And signed the token with private key created during DEP MDM server creation. On the device I see Verification error when tried to login with Managed Apple account. In ABM, Access management setting was set to Managed Devices /Supervised only. Any help would be appreciated.
Topic:
Business & Education
SubTopic:
Device Management
Can I upload custom app onto the ABM? if yes then how can we install it into the user's devices?
Topic:
Business & Education
SubTopic:
General
I'm the IT Admin in my company. We use Microsoft Intune, which is a Mobile Device Management tool, to manage our devices and apps. I created an app protection policy, restricting the data can only be shared between the allowed apps. For example, if our user want to copy the content in Outlook for iOS to WeChat or personal memo, the action will be blocked.
However, may be it's too strict, here is the scenario that we need to hadle: A user selected the content in the Outlook for iOS mail, and wanted to use the "translate" function to do translation. Before the app protection policy was deployed, he can do the translation successfully. And now, it's blocked.
Therefore, we need to find a way to exempt the app "Translate" so that users can do the translation successfully. We put the value "com.apple.Translate"(this is a package ID listed in the official document of Apple) to the exemption, but it's not working.
May I know what is the correct "value" for the iOS native Translate APP? I need to put this value to our app protection policy to exempt Translate app.
Thank you so much.
My application supports Custom URL Schema which is used to perform an open operation. My application is used as a helper app for MDM, hence it will be installed as a Managed Application.
I want only the other Managed Applications to be able to invoke the Custom URL Schema and not allow it for unmanaged applications. Is there any such provision provided by Apple MDM protocol?
We'd like to determine if there is a configuration declaration that is active on a device as part of a predicate.
The current logic (based on the WWDC 22 session) is:
SUBQUERY(@status(management.declarations.configurations),
$declaration,
($declaration.@key(identifier) == "com.abc.declarationname" AND $declaration.@key(active) == true)).@count == 1
The goal is that if the declaration is active, then a predicate should evaluate to true.
This query does not appear to be working. Should we be able to use @status(management.declarations.activations) in a predicate? If so, what are we missing to attempt to determine if the declaration is active?
If I search the existing status objects that are sent from the device, it is showing as active in the status channel.
Topic:
Business & Education
SubTopic:
Device Management
can you make a profit with the seed program
Topic:
Business & Education
SubTopic:
General
How to apply for Apple one-on-one consultation。
How to contact Cook
how can i generate MDM Push Certificate for my own MDM server. Please guide me on that.
I have an issue with my MDM setup. The Push notification that installs and updates configuration profile in the device is no longer working. It was working
before Apple developer account got expired
we renewed our apple developer account and then retried and we got the device enrollment working just fine. Now when we are updating configuration profile and MDM server is supposed to notify the device using push notification, this is the part where its not working.
Are the certs faulty now since the account was expired?
Would just renewal of the Push cert work?
Will I have to setup the certs all over again?
Any help is appreciated. Thanks in advance.
How to test ManagedAppConfigurationProvider without MDM ?
Task { /* Configuration provider task */
for await configuration in configurationProvider.configurations(MyAppConfiguration.self) {
self.configuration = configuration ?? MyAppConfiguration.defaultConfiguration
}
}
Can the existence of a configuration be simulated, e.g. by storing a mocked configuration in UserDefaults? The UserDefaults key "com.apple.configuration.managed" seems not relevant here.
Topic:
Business & Education
SubTopic:
Device Management
Tags:
Frameworks
Managed Settings
Device Management
We’re looking for best practices to remotely update iOS apps that are deployed in Single App Mode (SAM) or Autonomous Single App Mode (ASAM), managed through MDM.
Imagine a typical use case: an iPad installed as a self-service kiosk at an airport restaurant. We need to update the app periodically without:
Displaying any prompts to the user
Relying on the user to approve or initiate the update (since the device is unattended)
Sending technicians onsite, as many devices are in remote locations
MDM providers have stated, “This is how Apple handles it,” without offering a workable solution. We’re hoping someone here has experience or suggestions for:
Seamless or silent app updates in SAM/ASAM
Update workflows that avoid interruptions or user interaction
Any proven strategies or automation options under MDM supervision
Any insight or documented approaches would be greatly appreciated.
Thank you!
Topic:
Business & Education
SubTopic:
Device Management
I'm trying to use DDM manager Safari Extensins in macOS Sequoia. I generate json and load it by mdm and ddm , but it doesn't seems to work. The json I loading is the following:
{
"Type": "com.apple.configuration.safari.extensions.settings",
"Payload": {
"ManagedExtensions": {
"*": {
"State": "AlwaysOn",
"PrivateBrowsing": "AlwaysOn",
"AllowedDomains": [],
"DeniedDomains": []
}
}
},
"Identifier": "com.test.safari"
}
macOS Sequoia response is the following:
{
"StatusItems" : {
"management" : {
"declarations" : {
"activations" : [
{
"active" : true,
"identifier" : "com.example.act",
"valid" : "valid",
"server-token" : "5cc191206d1b1933"
}
],
"configurations" : [
{
"active" : true,
"identifier" : "com.test.safari",
"valid" : "unknown",
"server-token" : "29d3ec5ab48e6367"
}
],
"assets" : [
],
"management" : [
]
}
}
},
"Errors" : [
]
}
you can see, The "valid" value is always "unknown" at ""identifier" : "com.example.act", but "Errors" is empty, Safari app don't load extensions , the SafariExtensionSettings" ddm don't work, Is there anything wrong with "SafariExtensionSettings" json? or how can I debug this bug .
Topic:
Business & Education
SubTopic:
Device Management
Tags:
macOS
Apple Business Manager
Safari Extensions
Device Management
We want to set key-value pair (installation_token: xxxxx) into an app installed by MDM.
Formerly we could set the key-value using Settings MDM command like this.
<dict>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>Settings</string>
<key>Settings</key>
<array>
<dict>
<key>Configuration</key>
<dict>
<key>installation_token</key>
<string>xxxxxxx</string>
</dict>
<key>Identifier</key>
<string>com.cloudflare.cloudflareoneagent</string>
<key>Item</key>
<string>ApplicationConfiguration</string>
</dict>
</array>
</dict>
We can still use this for the apps installed withInstallApplication MDM command, however we cannot apply this configuration into the app using Declarative Device Management. When we try it, we got an error like this.
<dict>
<key>CommandUUID</key>
<string>.............</string>
<key>Settings</key>
<array>
<dict>
<key>ErrorChain</key>
<array>
<dict>
<key>ErrorCode</key>
<integer>12008</integer>
<key>ErrorDomain</key>
<string>MDMErrorDomain</string>
<key>LocalizedDescription</key>
<string>Could not modify apps managed by Declarative Device Management.</string>
<key>USEnglishDescription</key>
<string>Could not modify apps managed by Declarative Device Management.</string>
</dict>
</array>
<key>Identifier</key>
<string>com.cloudflare.cloudflareoneagent</string>
<key>Item</key>
<string>ApplicationConfiguration</string>
<key>Status</key>
<string>Error</string>
</dict>
</array>
How can we work with managed application configuration with DDM?
Hello folks,
I stumbled upon a weird CNContact serialization problem. I use the Contacts framework to update the AIM field, which is one of the instantMessageAddresses within a single Contact. Here is the simplified code I used:
func updateAIMFieldOn(contact: CNContact, aimValue: String) {
do {
guard let mutableContact = contact.mutableCopy() as? CNMutableContact else {
logger.error("[CM] Couldn't update contact with aim \(aimValue)")
return
}
var updatedAddresses = mutableContact.instantMessageAddresses
updatedAddresses.append(CNLabeledValue(label: "", value: CNInstantMessageAddress(username: aimValue, service: CNInstantMessageServiceAIM)))
mutableContact.instantMessageAddresses = updatedAddresses
let saveRequest = CNSaveRequest()
saveRequest.update(mutableContact)
try CNContactStore().execute(saveRequest)
logger.verbose("Contact's AIM updated successfully!")
} catch {
logger.error("Couldn't update contact")
}
}
And after serializing the contact to data, and then deserializing, the contact got two AIM fields with the same value:
X-AIM;type=pref:some:part:of_my_aim_value
IMPP;X-SERVICE-TYPE=AIM;type=pref:some:part:of_my_aim_value
Why does it work in this manner? Is it possible that ":" char causes that? Format of my aim username is {some:part:of_my_aim_value}. I didn't find any information in the docs.
Thanks!
I am checking the response of DeviceInformation Command to collect network information from iPad.
On iPad(iPad Pro 11, M4) devices that use WiFi without inserting Usim or Esim, network values such as CurrentMCC and ICCID are received in response to the DeviceInformation command.
cf.)Even though it may be garbage value, I blurred the unique information just in case.
<key>ServiceSubscriptions</key>
<array>
<dict>
<key>CarrierSettingsVersion</key>
<string>61.0</string>
<key>CurrentCarrierNetwork</key>
<string></string>
<key>CurrentMCC</key>
<string>450</string>
<key>CurrentMNC</key>
<string>08</string>
<key>EID</key>
<string>blah blah</string>
<key>ICCID</key>
<string>blah balh</string>
<key>IMEI</key>
<string>blah blah</string>
<key>IsDataPreferred</key>
<true/>
<key>IsRoaming</key>
<true/>
<key>IsVoicePreferred</key>
<false/>
<key>Label</key>
<string>Provisioning</string>
<key>LabelID</key>
<string>00000000-0000-0000-0000-000000000000</string>
<key>PhoneNumber</key>
<string></string>
<key>Slot</key>
<string>CTSubscriptionSlotOne</string>
<key>SubscriberCarrierNetwork</key>
<string>iPad</string>
</dict>
</array>
This is a bit weird. If I collect the same information from an iPhone(iPhone 15 Pro Max) that only uses wifi and does not use Usim or Esim, it does not respond with values like ICCID, CurrentMCC, etc.
<key>ServiceSubscriptions</key>
<array>
<dict>
<key>IMEI</key>
<string>blah blah</string>
<key>Slot</key>
<string>CTSubscriptionSlotOne</string>
</dict>
<dict>
<key>EID</key>
<string>blah blah</string>
<key>IMEI</key>
<string>blah blah</string>
<key>Slot</key>
<string>CTSubscriptionSlotTwo</string>
</dict>
</array>
I'm confused by the network information collected. Is there a reason why the collected network information of iPad and iPhone are different?
Topic:
Business & Education
SubTopic:
Device Management
Tags:
iOS
iPadOS
Core Telephony
Device Management