Enterprise
RSS for tagThe Apple Developer Enterprise Program allows large organizations to develop and deploy proprietary, internal-use apps to their employees.
Posts under Enterprise tag
133 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hi team,
we have a large-scale application in use that sends bulk emails to thousands of users. We adhere to all standard guidelines and protocols, and our email addresses are whitelisted to ensure they are not considered spam.
Our users create email alerts on our platform and receive notifications on their respective email addresses. These communications are not unknown, spam, or unsolicited marketing. To maintain trust with our users, we provide an unsubscribe feature as per RFC2369-compliant.
We have added list unsubscribe headers with mailTo implementation and sent it to outlook/gmail accounts. However, when unsubscribed, the email seems to be having the encoded characters as is. Whereas the same is working fine in other email clients without any encodings.
The headers were implemented according to the List-Unsubscribe headers as specified in the IETF RFC and our emails are purely transactional in nature.
This is a critical issue for a large organization like ours and while it works properly on Gmail web and mobile, it is essential for us to check with Apple Mail client as well. This situation undermines our commitment to user trust and compliance.
Can anybody assist me why the encoding is showing up?
Would like to know whats the process involved to enable the unsubscribe button in Apple mail client application?
I'm receiving this error message from Apple saying that my app is crashing when they test, but I've already done the tests on the iPad version they recommended and it worked normally.
Message below of the review team:
Hello,
Thank you for your resubmission. Upon further review, we identified additional issues that need your attention. See below for more information.
If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know.
Review Environment
Submission ID: 4f068d93-c30e-431c-b65c-6ff4c3ab1098
Review date: January 23, 2025
Version reviewed: 1.0
Guideline 2.1 - Performance
Issue Description
The app still crashed during review. Apps that crash negatively impact users.
Steps leading to crash:
The app crashed upon login attempt.
Review device details:
Device type: iPad Air (5th generation)
OS version: iPadOS 18.2.1
I left the file below crashlog:
{"app_name":"MauiApp2","timestamp":"2025-01-27 11:39:16.00 +0000","app_version":"4.0","slice_uuid":"11117a05-c930-3591-b6d9-7905912af710","adam_id":"6740661076","build_version":"4","bundleID":"com.company.MauiApp2","platform":2,"share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 18.2.1 (22C161)","roots_installed":0,"incident_id":"987579BB-C332-42CF-B7AB-3F019902703A","name":"MauiApp2"}
{
"uptime" : 40000,
"procRole" : "Foreground",
"version" : 2,
"userID" : 501,
"deployVersion" : 210,
"modelCode" : "iPad13,16",
"coalitionID" : 1424,
"osVersion" : {
"isEmbedded" : true,
"train" : "iPhone OS 18.2.1",
"releaseType" : "User",
"build" : "22C161"
},
"captureTime" : "2025-01-27 11:39:15.7724 +0000",
"codeSigningMonitor" : 1,
"incident" : "987579BB-C332-42CF-B7AB-3F019902703A",
"pid" : 1883,
"translated" : false,
"cpuType" : "ARM-64",
"roots_installed" : 0,
"bug_type" : "309",
"procLaunch" : "2025-01-27 11:38:57.0672 +0000",
"procStartAbsTime" : 979679570352,
"procExitAbsTime" : 980128429544,
"procName" : "MauiApp2",
"procPath" : "\/private\/var\/containers\/Bundle\/Application\/240115B9-6606-406B-BD49-C24EC7F3D436\/MauiApp2.app\/MauiApp2",
"bundleInfo" : {"CFBundleShortVersionString":"4.0","CFBundleVersion":"4","CFBundleIdentifier":"com.company.MauiApp2","DTAppStoreToolsBuild":"16C5031b"},
"storeInfo" : {"itemID":"6740661076","deviceIdentifierForVendor":"27BFDD21-822E-47D6-B639-199303E14913","thirdParty":true,"softwareVersionExternalIdentifier":"871814512"},
"parentProc" : "launchd",
"parentPid" : 1,
"coalitionName" : "com.company.MauiApp2",
"crashReporterKey" : "83a5662fa3ae9a4fa99bf1f03c706f755ff38e3d",
"appleIntelligenceStatus" : {"state":"unavailable","reasons":["notOptedIn","assetIsNotReady"]},
"wasUnlockedSinceBoot" : 1,
"isLocked" : 0,
"codeSigningID" : "com.company.MauiApp2",
"codeSigningTeamID" : "ALCV75QR7M",
"codeSigningFlags" : 570450689,
"codeSigningValidationCategory" : 4,
"codeSigningTrustLevel" : 7,
"instructionByteStream" : {"beforePC":"fyMD1f17v6n9AwCRPOz\/l78DAJH9e8Go\/w9f1sADX9YQKYDSARAA1A==","atPC":"AwEAVH8jA9X9e7+p\/QMAkTHs\/5e\/AwCR\/XvBqP8PX9bAA1\/WECeA0g=="},
"bootSessionUUID" : "942643AD-6AFE-4696-ACEB-603AC2D48B4F",
"exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
"termination" : {"flags":0,"code":6,"namespace":"SIGNAL","indicator":"Abort trap: 6","byProc":"MauiApp2","byPid":1883},
"asi" : {"libsystem_c.dylib":["abort() called"]},
"faultingThread" : 0,
"threads" : [{"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":18446744071913938304},{"value":8},{"value":6135065824},{"value":6135063504},{"value":2354241331284576430},{"value":2354241335696964078},{"value":1023},{"value":6135063616},{"value":0},{"value":4336219676},{"value":7128134088,"symbolLocation":7344,"symbol":"WebKit::WebPage::requestDocumentEditingContext(WebKit::DocumentEditingContextRequest&&, WTF::CompletionHandler<void (WebKit::DocumentEditingContext&&)>&&)"},{"value":7128134340,"symbolLocation":7596,"symbol":"WebKit::WebPage::requestDocumentEditingContext(WebKit::DocumentEditingContextRequest&&, WTF::CompletionHandler<void (WebKit::DocumentEditingContext&&)>&&)"},{"value":328},{"value":8506093888,"symbolLocation":0,"symbol":"_main_thread"},{"value":0},{"value":6},{"value":259},{"value":8506094112,"symbolLocation":224,"symbol":"_main_thread"},{"value":4354417664},{"value":1},{"value":12927714000},{"value":0},{"value":0},{"value":6135069717},{"value":12950787712}],"flavor":"ARM_THREAD_STATE64","lr":{"value":9082160540},"cpsr":{"value":1073745920},"fp":{"value":6135065840},"sp":{"value":6135065808},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":8120668884,"matchesCrashFrame":1},"far":{"value":0}},"id":399494,"triggered":true,"name":"tid_103","queue":"com.apple.main-thread","frames"
Hello,
I am trying MDM apns push through curl command, the same command works on iphone XR but not on iphone 13, both device iOS version is 17
What can be the cause for this behavior.
The command is as below
curl.exe -X POST --http2 -k -v --cert PushCert.pem --cacert cacert.pem https://api.push.apple.com/3/device/9BFDFB46D48159D16E5DC80391B765EE99524CF294BB4BF9FB5AEA7A5F3FFD79 -d "{"mdm":"84F0C145-5963-4F06-9D11-DFBDB45802D5"}" -H "apns-topic: com.apple.mgmt.External.c217c1bf-ad51-42a9-9108-2e92ef705b2a" -H "apns-push-type: mdm"
We’re using the enterprise API for spatial barcode/QR code scanning in the Vision Pro app, but we often get invalid values for the barcode anchor from the API, leading to jittery barcode positions in the UI. The code we’re using is attached below.
import SwiftUI
import RealityKit
import ARKit
import Combine
struct ImmersiveView: View {
@State private var arkitSession = ARKitSession()
@State private var root = Entity()
@State private var fadeCompleteSubscriptions: Set = []
var body: some View {
RealityView { content in
content.add(root)
}
.task {
// Check if barcode detection is supported; otherwise handle this case.
guard BarcodeDetectionProvider.isSupported else { return }
// Specify the symbologies you want to detect.
let barcodeDetection = BarcodeDetectionProvider(symbologies: [.code128, .qr, .upce, .ean13, .ean8])
do {
try await arkitSession.requestAuthorization(for: [.worldSensing])
try await arkitSession.run([barcodeDetection])
print("Barcode scanning started")
for await update in barcodeDetection.anchorUpdates where update.event == .added {
let anchor = update.anchor
// Play an animation to indicate the system detected a barcode.
playAnimation(for: anchor)
// Use the anchor's decoded contents and symbology to take action.
print(
"""
Payload: \(anchor.payloadString ?? "")
Symbology: \(anchor.symbology)
""")
}
} catch {
// Handle the error.
print(error)
}
}
}
// Define this function in ImmersiveView.
func playAnimation(for anchor: BarcodeAnchor) {
guard let scene = root.scene else { return }
// Create a plane sized to match the barcode.
let extent = anchor.extent
let entity = ModelEntity(mesh: .generatePlane(width: extent.x, depth: extent.z), materials: [UnlitMaterial(color: .green)])
entity.components.set(OpacityComponent(opacity: 0))
// Position the plane over the barcode.
entity.transform = Transform(matrix: anchor.originFromAnchorTransform)
root.addChild(entity)
// Fade the plane in and out.
do {
let duration = 0.5
let fadeIn = try AnimationResource.generate(with: FromToByAnimation<Float>(
from: 0,
to: 1.0,
duration: duration,
isAdditive: true,
bindTarget: .opacity)
)
let fadeOut = try AnimationResource.generate(with: FromToByAnimation<Float>(
from: 1.0,
to: 0,
duration: duration,
isAdditive: true,
bindTarget: .opacity))
let fadeAnimation = try AnimationResource.sequence(with: [fadeIn, fadeOut])
_ = scene.subscribe(to: AnimationEvents.PlaybackCompleted.self, on: entity, { _ in
// Remove the plane after the animation completes.
entity.removeFromParent()
}).store(in: &fadeCompleteSubscriptions)
entity.playAnimation(fadeAnimation)
} catch {
print("Error")
}
}
}
The issue is with all our enterprise apps. All apps worked on version 18.1. For the few users that updated to 18.2.1 it stopped working after the update.
I have a phone that had 18.2.1 installed before I added any enterprise apps, they work fine.
So the issue is you have enterprise apps, update from 18.1 to 18.2.1 they stop working. Removing the app (and trust), and installing again doesn't solve the issue. On the app reinstall it's doesn't ask to add the trust or reboot, but the trust is added back.
When running the app, it opens for a second or two, then closes.
I have an in house application that I develop for my company.
The application requires our corporate MDM profile is installed on the phone. I recently got a new phone and our corporate IT team installed the MDM profile and the Comp Portal application for me to manage our corporate applications.
I installed the application through the Comp Portal. It crashes right away when I launch the application and I see this error message in the Console when connected to the phone:
"SpringBoard Snapshot generation request for bundleID: com.mycompany.mygroup.appName rejected due to the app being denylisted."
I see other errors from runningboardd about failing to spawn the job and SpringBoard Bootstrapping failed for <FBApplicationProcess: 0x510affd80; app<com.mycompany.mygroup.appName>:> with error: <NSError: 0x301e60090; domain: RBSRequestErrorDomain; code: 5; "Launch failed.">
I can launch a development version of the application with no problem by connecting the USB cable from my machine to my device and running through XCode.
Other people have no problems launching the application. I compared all the certificates in the management profile with another device where the application does not crash and there are identical.
We checked a number of settings on the devices to see if there could be something preventing the application from running but found nothing.
We reset all settings and deleted and reinstalled the application with rebooting to see if perhaps it was an incomplete installation. Our IT folks want to wipe the phone and start over but I have little confidence that will fix the issue since we don't know the root cause.
I am concerned that one of my Stakeholders might have the same issue if they get a new device. This application worked fine on my old phone.
Device: iPhone 16 Pro Max
iOS version: 18.2.1
Any ideas on next steps to troubleshoot this issue?
How can I figure out the cause of the denylisting?
I'm trying to enroll in the Apple Developer Account, but when I click on "subscribe," I get an error message that says, "Your purchase could not be completed. For assistance, contact iTunes Support." I've already added UPI as a payment method in the App Store and added 100 rupees from UPI to my Apple account.
Hi,
I have an enterprise account, and i added the capability "main camera access" to my app. Although have an enterprise license and the entitlement is correctly setup, the inhouse provisioning profile that I am creating still says that the capabilities are missing. Not sure what i am missing here.
Hello
We would like to proceed with the transfer of ownership of the launched app based on the Cafe24 platform.(Web App)
Last month, I inquired about how to transfer the Apple account login function together when transferring ownership and received a related manual.
When I asked and inquired about help from several developers regarding that part, they all received different answers.
Please review the answers below, and I would really appreciate it if you could guide me on how to proceed.
Developer 1: Cafe24-based launch apps require a separate transfer of the login function. It does not affect if you do not delete the existing member data in the database, and you only need to activate the login function to the new developer account.
Developer 2: Checking and analyzing existing servers and data - Transfer user data to Apple using Apple's Legacy User Identifier - Synchronize user data - Test and modify
It has to proceed to the above four steps, and synchronization work is also required to maintain all of the existing user's data because all of the user's identification values change when the login function is transferred.
Developer 3: It appears to be a task that needs to be stored in the server database by migrating from the user identifier created in the existing developer account to the user identifier to be used in the new developer account, which is not what the app is supposed to do, and it is recommended to find other experts.
Thank you.
I have a in-house delivered app, I updated certificates and delivered the app before expiring, inviting users to update. after certificates expiration people who did not update now must remove the app loosing personal data, and download it again, but app crashes.
I know that since iOS 18 in order to trust again an in-house identity, restart is required. What I need to know, is if there is some documentation where is explained the following:
if I remove the only app delivered by in-house enterprise profile I have on a customer device, via home, long time tap gesture, "remove the app" then I install again the app, the profile reappears under "VPN and device management" and results already as "trusted"
instead if I remove the app directly from settings > VPN and device management, when I re-install the app VPN and device management reappears and developer/app is not trusted, in it asks me to trust again the developer and during the operation, restarts the device, asks me device code and so on.
so, my final question is:
since it is clear to me that there is a difference between two removal methods, where is this logic described? Is it only present for in-house distribution?
Hi all, if anyone from apple Dev team is seeing this, please do consider supporting device mirroring without the need to login to icloud and with cable connection in addition to wi-fi.
I am working in a corporate setting which does not allow us to login to icloud, thus I am unable to use device mirroring when my work really needs is, I am stuck with Quick time preview.
I am quite sure, that this does not only apply to me.
I am helping my company to renew the Enterprise Account, this exercise had been running smoothly in previous year. However, we did submit the application almost 1 month in advance, however, no reply or status update received yet. We had raised several tickets in support but helpless, our account is going to expired on 29-Dec-2024, anyone can share what should we do?
Last week we received this e-mail from Apple, without any information about reasons. Our infrastructure builds on Apple infrastructure and contains more than 1000 iOS devices. We have paid enterprise account until April 2025. Why Apple cancelled our membership?
We are reaching out to inform you that your Apple Developer Enterprise Program ("ADEP") membership will be terminated, effective February 12, 2025.
Please be assured that this decision is not a result of any action or inaction on your part, and it is not subject to appeal.
As of February 12, 2025, you will no longer have access to your membership and account-related services for developing and distributing in-house, internal use software. Certificates, identifiers, and provisioning profiles will be revoked, and the apps associated with your account will no longer function.
In accordance with Section 11.3 of the ADEP Agreement, please immediately destroy all Apple Confidential Information that is in your possession or control and note your continuing obligations upon termination. Nothing in this letter should be construed as a waiver of any rights or remedies Apple may have, all of which are hereby reserved.
I know Apple Engineers are busy, It’s great that non-Apple Engineers offer advice and assistance, but I kind of thought there’d be at least a reply from an Apple Engineer on MDM issues?
I have posted about apple watch mdm issues and have got none responses
Hey, I have Enterprise Access on the account and have added the passthrough capability and the entitlement on the main project and the "Broadcast Upload" extension, too.
The broadcast works except it returns a black screen.
I am attaching some screenshots below of the entitlement file. I have tried searching online to no avail, so any help would be greatly appreciated. I am also attaching the code.
import Foundation
import AVFoundation
import ReplayKit
class VideoAssetWriter {
private var isRecording = false
private var outputStream: OutputStream?
private func setupConnection() {
guard outputStream == nil else { return }
print("setting up connection.")
let serverIP = macIP
let port = 12345
var readStream: Unmanaged<CFReadStream>?
var writeStream: Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
serverIP as CFString,
UInt32(port),
&readStream,
&writeStream)
guard let writeStream = writeStream?.takeRetainedValue() else {
print("Failed to create write stream")
return
}
self.outputStream = writeStream as OutputStream
self.outputStream?.open()
}
func startRecording() {
isRecording = true
}
func processVideoSampleBuffer(_ sampleBuffer: CMSampleBuffer) {
print("Processing Sample 1")
guard isRecording else { return }
print("Processing Sample 2")
sendVideoChunkToServer(sampleBuffer)
}
private func sendVideoChunkToServer(_ sampleBuffer: CMSampleBuffer) {
guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
print("Processing Sample 3")
let ciImage = CIImage(cvPixelBuffer: imageBuffer)
let context = CIContext()
guard let cgImage = context.createCGImage(ciImage, from: ciImage.extent) else { return }
print("Processing Sample 4")
let image = UIImage(cgImage: cgImage)
if let imageData = image.jpegData(compressionQuality: 0.5) {
guard imageData.count <= 10_000_000 else {
print("Frame too large: \(imageData.count) bytes")
return
}
if outputStream == nil {
setupConnection()
}
print("sending frame size up connection.")
// Convert to network byte order (big-endian)
var frameSize = UInt32(imageData.count).bigEndian
let sizeData = Data(bytes: &frameSize, count: MemoryLayout<UInt32>.size)
_ = sizeData.withUnsafeBytes { outputStream?.write($0.baseAddress!.assumingMemoryBound(to: UInt8.self), maxLength: sizeData.count) }
print("sending image data up connection.")
// Send frame data
_ = imageData.withUnsafeBytes { outputStream?.write($0.baseAddress!.assumingMemoryBound(to: UInt8.self), maxLength: imageData.count) }
}
}
func stopRecording() {
isRecording = false
outputStream?.close()
outputStream = nil
}
}
This is the broadcast picker view wrapper:
// Broadcast Picker View wrapper
struct BroadcastButtonView: UIViewRepresentable {
func makeUIView(context: Context) -> RPSystemBroadcastPickerView {
let broadcastPickerView = RPSystemBroadcastPickerView(
frame: CGRect(x: 0, y: 0, width: 200, height: 200)
)
// Make sure this matches your broadcast extension bundle identifier
broadcastPickerView.preferredExtension = "my-extension-bundle-identifier"
broadcastPickerView.showsMicrophoneButton = false
return broadcastPickerView
}
func updateUIView(_ uiView: RPSystemBroadcastPickerView, context: Context) {
}
}
The extension SampleHandler:
override func broadcastPaused() {
print("paused broadcast")
// User has requested to pause the broadcast. Samples will stop being delivered.
}
override func broadcastResumed() {
print("resumed broadcast")
// User has requested to resume the broadcast. Samples delivery will resume.
}
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
print("broadcast received")
assetWriter?.processVideoSampleBuffer(sampleBuffer)
}
Looking forward to any and all help.
Information Property list:
Information property list for the extension:
The capabilities:
Our company has been trying to register for the Apple Developer Enterprise Program since September 15, 2024. However, it wasn’t until early November that we received an email requesting our business information. Following that, we contacted Apple’s team on November 15, 2024, to answer their interview questions.
Now, more than a month has passed since that call, and we still have no idea about the status of our approval. When I check the account, it always shows 'Your enrollment is being processed. Your enrollment ID is 8K8SXNKA89.' I’ve also emailed Apple Support but have not received any further response.
How much longer will this process take? Apple’s handling of this is excessively slow and frustrating
Hello! Everybody. We receive messages from our partners and customers about Enterprise Program Cancellation at 12 of February 2025. Is it a worldwide phenomenon and the Enterprise program will no longer be available for everyone or it is an issue with our customers and partners?
Thank you very much for your replies!
Hi Apple Community,
If a macOS Device is FileVault Encrypted, We are using the keys FDE_HasInstitutionalRecoveryKey, FDE_HasPersonalRecoveryKey from SecurityInfo to know the Device Encryption Type. But Some times rarely we get FDE_Enabled as true but both the above mentioned keys as false
Also we get SecurityInfo Response patterns like these only if FileVault is enabled in Device with iCloud as option to unlock the disk
Can we confirm this pattern or is there any way to know if device is encrypted with options other than Personal / Institutional Types
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>SecurityInfo</string>
<key>SecurityInfo</key>
<dict>
......
......
......
<key>FDE_Enabled</key>
<true/>
<key>FDE_HasInstitutionalRecoveryKey</key>
<false/>
<key>FDE_HasPersonalRecoveryKey</key>
<false/>
......
......
......
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>..............</string>
</dict>
</plist>
We have an enterprise app for which one of the Users is facing the below error.
Unable to verify app Internet connection is required to verify trust of the developer "<Enterprise_distribution_Profile>". This app will not be available until verified.
What could be the reason behind this error as only one user is facing the issue. Is there a way to fix it.