Explore the intersection of business and app development. Discuss topics like device management, education, and resources for aspiring app developers.

All subtopics

Post

Replies

Boosts

Views

Activity

ASAuthorization SSO Extension view controller for macOS
Our app is currently employing an SSO extension. Our implementation of beginAuthorization(with request: ASAuthorizationProviderExtensionAuthorizationRequest) seems to be working correctly, as we are able to process the request and complete the SSO. Unfortunately we seem to be running into trouble getting an associated UI to display for our users. Our info.plist file for the extension has the value NSExtensionPrincipalClass:$(PRODUCT_MODULE_NAME).AuthenticationViewController and we have an accompanying storyboard file named AuthenticationViewController.xib where the file's owner is set to our custom view controller. We have added a window and some views to this storyboard file and linked them to our view controller which is also named AuthenticationViewController The window will appear when the extension is activated. However, this window will appear behind the safari window we have open, and we cannot seem to bring it to the front of the other views. Traditional methods do not seem to work since the extension cannot access a sharedApplication object. We have tried other methods, including using NSRunningApplication.runningApplications to locate the extension via bundle identifier and activate it, but activation still does not bring it to the front of all open windows. We also tried using presentAuthorizationViewController(completion: @escaping (Bool, Error?) -> Void) to no avail. We got true for our result in the completion closure, but we couldn't get the UI to display at all in that case. We fear that we may be misguided in our approach, and have not configured our storyboard correctly to achieve the desired result. We have been able to find no example of this for macOS so any help would be greatly appreciated!
2
0
1.6k
Jul ’21
Screen Time Guardian App Questions
WWDC21 session 10123 shows a screen that implies the guardian instance of your app is able to select apps on your child's device to encourage or to control. In my experience with the API so far I can't see a way to do this. The API only seems to work on the child's phone. Here are my questions: Is there a suggested way to determine whether the app is running on a guardian device? The only way I can see is to attempt AuthorizationCenter.shared.requestAuthorization and check for an error value of .invalidAccountType. But it seems you could get that error for other reasons too. Is there a way to present FamilyActivityPicker on the guardian device but have it show apps on the child's phone? I don't see any thing in the API for selecting a child account to access with `FamilyActivityPicker', it seems to only show the phone's user's apps (or no apps if it's the guardian's phone). After retrieving app tokens from 'FamilyActivityPicker' is there a recommended way to present to the user in the UI? The WWDC session shows an app icon and app name (i.e. "Books" and "Solar System"), but my understanding is that info is hidden from the developer for privacy reasons. So I'm wondering if the example in the session is really feasible.
7
0
3.2k
Jul ’21
Webclip icon cannot be deleted
The iphone info: OsVersion: iOS 15 Device model: iphone 12 Steps: Install the MDM profile on the iphone. The server pushes the command to install the webclip profile through MDM (the profile is set to not be manually removable). After installing the webclip profile, the webclip icon will appear on the Home Screen of the phone screen. When the webclip is no longer used, remove the webclip profile through MDM. The problem occurs in step 4, the webclip profile is deleted, but the webclip icon still exists on the home screen of the mobile phone, and cannot be removed by tools such as Apple Configurator2. So what causes this phenomenon and how to fix?
4
3
1.8k
Jan ’23
Implementing Oauth2 for User Enrollment
** Hi Community,** We have been testing on using oauth2 for User Enrollment.Where as per doc provided we have supplied the method, authorization-url, token-url, redirect-url, client-id in the 401 response from MDM Server Authorization Request As mentioned the apple client performed authorization request by adding state, login_hint to the Authorization-url and the params mentioned above and successfully received the authorization code after the user makes a login with the IDP. <<<<< Request GET /oauth2/authorization?response_type=code &client_id=XXXXXXXXXX &redirect_uri=apple-remotemanagement-user-login:/oauth2/redirection &state=XXXXXXXXXX &login_hint=useroa@example.com HTTP/1.1 Host: mdmserver.example.com ------- MULTIPLE REQUESTS BETWEEN CLIENT Server ---------- >>>>> Response HTTP/1.1 308 Permanent Redirect Content-Length: 0 Location: apple-remotemanagement-user-login:/oauth2/redirection ?code=XXXXXXXXXX&state=XXXXXXXXXX . Token Request Using the code received from authorization server apple client performs this step to get the access_token and refresh_token.I am using a authorization server created by default in my Okta domain and this step fails. <<<<< Request POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 195 grant_type=authorization_code &code=XXXXXXXXXXXX &redirect_uri=apple-remotemanagement-user-login:/oauth2/redirection &client_id=XXXXXXXXXX >>>>> Response HTTP/2 401 Unauthorized Content-Type: application/json { "error": "invalid_client", "error_description": "Client authentication failed. Either the client or the client credentials are invalid." } When debugged this issue, As per Okta's doc https://developer.okta.com/docs/guides/implement-grant-type/authcode/main/#exchange-the-code-for-tokens The client must specify Their credentials in Authorization header as Authorization : Basic <client_id>:<client_secret> in order to get the access_token And Also as per RFC-6749 https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3 The Confidential Clients must specify their client_id, client_secret provided by the authorization server to receive the access_tokens. May I know how to overcome this issue or did I missed any steps that may include the Authorization header Thanks in Advance,.
1
0
1.6k
Mar ’23
Apple Business Manager Azure app stopped syncing
Since a few days my Apple Business Manager Enterprise App in Azure was quarantined. I had no configuration changes, it just suddenly stopped. I have two groups which contain the users I want to sync. It seems it cannot use groups at all anymore. If I assign users directly it will work. But that's very inconvenient for us. Was there any change lately to explain why this does not work anymore? Group User
0
0
378
Jul ’23
Sign In Policy For ManagedAppleID
Hi Apple Team, We are excited by looking on the new updates introduced in WWDC23. In a Session named "Do More With Managed Apple IDs" Where There is Sign In Policy Introduced For Managed Apple IDs Any Device Managed Devices Only Supervised Devices Only And as a MDM Vendor We need to Support GetToken CheckIn Request to Support Sign In Policy Managed Devices Only, Supervised Devices Only and have some doubts regarding this. When the Policy is Set To Managed Device Only and we don't have DEP Tokens Registered by Customer with us.How could we able generate the JWT Signed Token with the necessary serverUUID. In case 1) Even though if I have DEP Token with me How could I choose the necessary serverUUID If the device had managed by MDM through Profile Based Enrollments. Can you please provide with appropriate solution to overcome this
0
0
565
Jul ’23
Clarification regarding Not Now Option in ABM enrollment using which user can skip ABM enrollment for 8 hours
During the "What’s new in managing Apple devices" session, you provided information about the "Not Now" option during Mac ABM Enrollment. We observed that this option was functional when enrolling a Mac through ABM using the "profiles renew -type enrollment" command. However, when attempting to enroll a Mac by erasing it through ABM, we couldn't find the "Not Now" option. Could you please confirm whether the "Not Now" option is intended to be available when enrolling a Mac by erasing it through ABM? Your clarification on this matter would be greatly appreciated.
0
0
554
Jul ’23
ScheduleOSUpdate command fails
When pushing the “ScheduleOSUpdate” command to a Supervised MDM enrolled iPad device, command fails with the following error. Available OS Update response <key>AvailableOSUpdates</key> <array> <dict> <key>AllowsInstallLater</key> <false/> <key>Build</key> <string>20G75</string> <key>DownloadSize</key> <integer>4456890240</integer> <key>HumanReadableName</key> <string>iOS 16</string> <key>InstallSize</key> <integer>467664896</integer> <key>IsCritical</key> <false/> <key>ProductKey</key> <string>iOSUpdate20G75</string> <key>ProductName</key> <string>iOS</string> <key>RestartRequired</key> <true/> <key>Version</key> <string>16.6</string> </dict> </array> <key>CommandUUID</key> <string>AvailableOSUpdates</string> <key>Status</key> <string>Acknowledged</string> ScheduleOSUpdate command <?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>CommandUUID</key> <string>ScheduleOSUpdate</string> <key>Command</key> <dict> <key>RequestType</key> <string>ScheduleOSUpdate</string> <key>Updates</key> <array> <dict> <key>ProductKey</key> <string>iOSUpdate20G75</string> <key>InstallAction</key> <string>Default</string> <key>ProductVersion</key> <string>16.6</string> </dict> </array> </dict> </dict> </plist> ScheduleOSUpdate command response <?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>CommandUUID</key> <string>AttemptOSUpdate</string> <key>Status</key> <string>Acknowledged</string> <key>UDID</key> <string>****</string> <key>UpdateResults</key> <array> <dict> <key>ErrorChain</key> <array> <dict> <key>ErrorCode</key> <integer>12057</integer> <key>ErrorDomain</key> <string>MCMDMErrorDomain</string> <key>LocalizedDescription</key> <string>The update failed to download.</string> <key>USEnglishDescription</key> <string>The update failed to download.</string> </dict> <dict> <key>ErrorCode</key> <integer>2202</integer> <key>ErrorDomain</key> <string>DeviceManagement.error</string> <key>LocalizedDescription</key> <string>A download failed.</string> </dict> <dict> <key>ErrorCode</key> <integer>31</integer> <key>ErrorDomain</key> <string>com.apple.softwareupdateservices.errors</string> <key>LocalizedDescription</key> <string>The operation couldn’t be completed. (com.apple.softwareupdateservices.errors error 31.)</string> </dict> </array> <key>InstallAction</key> <string>Error</string> <key>ProductKey</key> <string>iOSUpdate20G75</string> <key>Status</key> <string>DownloadFailed</string> </dict> </array> </dict> </plist> As seen in the AvailableOSUpdate response, this device is applicable for iOS 16 update but unable to update manually as well as via MDM. The device has the following message showing up, is there any relation between the MDM command failing and this message. This iPad device is currently running "12.1.4" OS version Kindly confirm the reason for this message and the reason for this failure via MDM. And also confirm if there are any restrictions to update to certain major OS versions from lower OS versions, if so kindly share any documentation available regarding this. 
0
0
697
Aug ’23
new classes .h .cpp Xcode, translate from Visual Studio
Good morning, I am very beginners student of openFrameworks. I'm following a tutorial trying to create a new class with openFrameworks but I cannot compile it in the right way. This because the tutorial I found in on Visual Studio and i'm working on a Mac with Xcode. This problem is blocking me and I cannot go on with the course. Can someone help me translate the code to create a new class from Visual Studio to Xcode? The language is the same, but the programme in this case is slightly different. On Visual Studio the files are Class.H and Class.Cpp THIS IS CLASS.H VISUAL STUDIO #pragma once #include "ofMain.h" class ball { public: ball(); void setup (ofVec2f initialPos, ofVec2f initialVel, float rad); void update (); void draw(); ofVec2f pos; ofVec2f vel; ofVec2f radius; }; CLASS.CPP VISUAL STUDIO #include "ball.h" ball :: ball();{ } void ball :: setup(ofVec2f initialPos, ofVec2f initialVel, float rad); { ofVec2f initialPos; ofVec2f initialVel; float rad; } //-------------------------------------------------------------- void ball::update() { pos += vel; if ((pos.x > ofGetWidth ()) || (pos.x < 0)){ vel.x *= -1; } if ((pos.y > ofGetWidth ()) || (pos.y < 0)){ vel.y *= -1; } //-------------------------------------------------------------- void ball::draw(){ ofDrawCircle (pos.x, pos.y, radius); } On Xcode it is slightly different and I don't know how to translate it. Here is the setting for the two XCode pages CLASS.H and CLASS.M CLASS.H // // Default Classes.h // default classes // // Created by Valerie Tameu on 23/08/23. // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface Default_Classes : NSObject @end NS_ASSUME_NONNULL_END and CLASS.m // // Default Classes.m // default classes // // Created by Valerie Tameu on 23/08/23. // #import "Default Classes.h" @implementation Default_Classes @end Somebody can help me to traslate the code of Visual Studio here in XCode? Thank you for the help!
1
0
510
Aug ’23
Apple declarative management status subscription for management.client-capabilities.
I am trying apple declarative management protocol. I would like to get management.client-capabilities from device on demand apart from incremental updates when device upgrades. Is this possible by some declaration or workaround without reenrolling device ? Sample subscription: { "Identifier": "status-subscriptions1", "ServerToken": "$serverToken", "Type": "com.apple.configuration.management.status-subscriptions", "Payload": { "StatusItems": [ { "Name": "device.operating-system.build-version" }, { "Name": "device.identifier.serial-number", }, { "Name": "device.identifier.udid", }, { "Name" : "device.model.family", }, { "Name" : "device.model.identifier", }, { "Name" : "device.model.marketing-name", }, { "Name" : "device.model.number", }, { "Name" : "device.operating-system.family", }, { "Name" : "device.operating-system.marketing-name", }, { "Name" : "device.operating-system.supplemental.build-version", }, { "Name" : "device.operating-system.supplemental.extra-version", }, { "Name" : "device.operating-system.version", }, { "Name" : "diskmanagement.filevault.enabled", }, { "Name": "mdm.app" }, { "Name": "management.client-capabilities", }, { "Name": "security.certificate.list", }, { "Name": "passcode.is-compliant", }, { "Name": "passcode.is-present", } ] } }
0
0
274
Aug ’23
Getting "Internal error - 9603" for manageVPPLicensesByAdamIdSrv API when assigning license for a particular app
Problem Description: We are using manageVPPLicensesByAdamIdSrv API for assigning licenses for serial numbers. We get "Internal error - 9603" response for this API when assigning the API for valid adamID of an app. When using the same API other apps, this issue doesn't occur. AdamID: 720111835. The license is assigning properly for the same app in VPP License Management 2.0.0 + - Associate Assets API. Currently, we will not able to the new API. We overcame this issue by creating a new location token in the same organization and purchasing the same app in it and using it to assign the license to device for the same app which is successful. Kindly help us with this issue. Request: {"pricingParam":"STDQ","disassociateSerialNumbers":["SAMPLESERIAL"],"adamIdStr":"720111835","sToken":"********************","notifyDisassociation":false} Response: {"errorMessage":"Internal error.","errorNumber":9603,"status":-1}
0
0
648
Sep ’23
InstalledApplicationList(MDM command) response is Incorrect.
When I execute the InstalledApplicationList(MDM command), A part of the response is Incorrect. TikTokLite is not a managed app according to the later methods. This is the request and response. ■Request <?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>Command</key> <dict> <key>ManagedAppsOnly</key> <true /> <key>RequestType</key> <string>InstalledApplicationList</string> </dict> <key>CommandUUID</key> <string>8dffac1f-55df-40b1-8c69-414dfb8aedac</string> </dict> </plist> ■Response <!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>8dffac1f-55df-40b1-8c69-414dfb8aedac</string> <key>InstalledApplicationList</key> <array> <dict> <key>AdHocCodeSigned</key> <false /> <key>AppStoreVendable</key> <true /> <key>BetaApp</key> <false /> <key>BundleSize</key> <integer>12525568</integer> <key>DeviceBasedVPP</key> <false /> <key>DynamicSize</key> <integer>12288</integer> <key>ExternalVersionIdentifier</key> <integer>858324287</integer> <key>HasUpdateAvailable</key> <false /> <key>Identifier</key> <string>net.skyseaclientview.mdm</string> <key>Installing</key> <false /> <key>IsAppClip</key> <false /> <key>IsValidated</key> <true /> <key>Name</key> <string>SKYSEA MDM</string> <key>ShortVersion</key> <string>1.1.182200</string> <key>Version</key> <string>36</string> </dict> <dict> <key>AdHocCodeSigned</key> <false /> <key>AppStoreVendable</key> <true /> <key>BetaApp</key> <false /> <key>BundleSize</key> <integer>266919936</integer> <key>DeviceBasedVPP</key> <false /> <key>DynamicSize</key> <integer>15335424</integer> <key>ExternalVersionIdentifier</key> <integer>858769767</integer> <key>HasUpdateAvailable</key> <false /> <key>Identifier</key> <string>com.ss.iphone.ugc.tiktok.lite</string> <key>Installing</key> <false /> <key>IsAppClip</key> <false /> <key>IsValidated</key> <true /> <key>Name</key> <string>TikTokLite</string> <key>ShortVersion</key> <string>29.3.16</string> <key>Version</key> <string>2931603</string> </dict> </array> <key>Status</key> <string>Acknowledged</string> <key>UDID</key> <string>00008120-000C28DC0AB8C01E</string> </dict> </plist> ・TikTokLite does not appear in the "Mobile Device Management App" in the iPhone's Settings app. Is this right? If this is expected response, Is there a way to judge that the app is a managed app? This is the Device information. <!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>31317d47-355c-40cb-ad72-3bff6c57989b</string> <key>QueryResponses</key> <dict> <key>AvailableDeviceCapacity</key> <real>112.608231424</real> <key>BatteryLevel</key> <real>0.97999999999999998</real> <key>BluetoothMAC</key> <string>***</string> <key>BuildVersion</key> <string>20F66</string> <key>CellularTechnology</key> <integer>1</integer> <key>DataRoamingEnabled</key> <false /> <key>DeviceCapacity</key> <real>128</real> <key>DeviceName</key> <string>***</string> <key>EASDeviceIdentifier</key> <string>***</string> <key>IMEI</key> <string>***</string> <key>IsActivationLockEnabled</key> <true /> <key>IsCloudBackupEnabled</key> <true /> <key>IsDeviceLocatorServiceEnabled</key> <true /> <key>IsDoNotDisturbInEffect</key> <false /> <key>IsMDMLostModeEnabled</key> <false /> <key>IsRoaming</key> <false /> <key>IsSupervised</key> <false /> <key>Model</key> <string>MQ983J</string> <key>ModelName</key> <string>iPhone</string> <key>ModemFirmwareVersion</key> <string>1.70.02</string> <key>OSVersion</key> <string>16.5</string> <key>PersonalHotspotEnabled</key> <false /> <key>ProductName</key> <string>iPhone15,3</string> <key>SerialNumber</key> <string>***</string> <key>SubscriberMCC</key> <string></string> <key>SubscriberMNC</key> <string></string> <key>UDID</key> <string>00008120-000C28DC0AB8C01E</string> <key>VoiceRoamingEnabled</key> <false /> <key>WiFiMAC</key> <string>***</string> <key>iTunesStoreAccountHash</key> <string>***</string> <key>iTunesStoreAccountIsActive</key> <true /> </dict> <key>Status</key> <string>Acknowledged</string> <key>UDID</key> <string>00008120-000C28DC0AB8C01E</string> </dict> </plist>
1
0
570
Sep ’23
WebContent filter and ContentFilterUUID clarification
Hello, ContentFilterUUID in WebContentFilter payload can be used for "Per-App content filter" - the UUID can be used in app attributes, as stated in the doc: A globally-unique identifier for this content filter configuration. Managed apps with the same ContentFilterUUID in their app attributes have their network traffic processed by the content filter. Do I understand right that if we want the profile to be globally applied, it should NOT contain the ContentFilterUUID key ? We're seeing cases where setting the key would make the profile doing nothing on the device, but the documentation is not 100% clear on this. Any clarification would be very appreciated ! Thanks
2
0
480
Sep ’23