Hi,
I have recently encountered an app with some odd behaviour and wanted to clarify some details about the way sandboxing works with iOS apps installed on a Mac. I am unsure whether this is due to a misunderstanding of system behaviour or whether this is a bug.
The app was installed from the Mac App Store, designed for iPad.
The developer of the app informed me that in lieu of a sign-in process, the app tries to persistently store a UUID of the user on the device so that when the app is deleted and reinstalled, the user is automatically logged in again.
The developer says that two mechanisms are being used: 1) NSUserDefaults (via Flutter shared prefs) and 2) identifierForVendor.
In the case of 1), my understanding is that these are managed by cfprefsd. Using the 'defaults domain' command, the domain of the app appears. However, there are no keys or values stored. Using the 'defaults write' and 'defaults read' and 'defaults delete' commands on that bundle identifier works as expected, but since it starts out empty, it cannot be read or deleted.
Furthermore, the app's data is supposed to be sandboxed in /Library/Containers. When the app is uninstalled from Launchpad, I have confirmed that the folder is missing. When reinstalled, the app's settings and data are missing, but crucially, the cloud identifier is still persistent and is evident after 'setup'.
In the case of 2), the developer documentation states that identifierForVendor changes when all apps from a developer have been removed from a device. The app in question is the only app that was installed from this developer, so logically this identifier should have changed when the app was deleted and reinstalled.
I have confirmed that iCloud drive is not being used to store this data as there is no data in iCloud for this app.
In any case, when the app is uninstalled and reinstalled, the app automatically logs the user into the "account" it was previously logged into, along with all of that user's data in the cloud.
I have a sense that this type of persistent identifier tracking is what sandboxing was meant to address, but I am unsure why I have been unable to remove the UUID tag from my system. Any insight would be greatly appreciated!
Prioritize user privacy and data security in your app. Discuss best practices for data handling, user consent, and security measures to protect user information.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
After the App transfer is initiated, will the replacement of the old and new certificates affect user authorization? (Based on some replies from DTS on the forum [Apple login authorization data is generated in combination with the team ID to which the App currently belongs], it is speculated that after the App transfer, during the period when the certificate configuration of the new team ID is not completed, authorization or authentication may not be performed normally, resulting in users being unable to use the Apple login function normally)
During the 60-day migration period, if the user authorizes or cancels authorization and then authorizes again in the old app, will the authorized data be different? If so, will transfer_sub be included in the authorization operation?
Hi,
Just follow the related post to implement this method in the app, but it gave me error, like: "An SSL error has occurred and a secure connection to the server cannot be made"
the info plist configuration like below,
NSPinnedDomains
mysite.com
NSIncludesSubdomains
NSPinnedCAIdentities
SPKI-SHA256-BASE64
r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=
The pub key is right for me, since it works when I use different pub key pinning through URLSession interface.
So here, I dont know where to start the troubleshooting, any advice would be appreciated.
Topic:
Privacy & Security
SubTopic:
General
I am developing an app that uses Sign In with Apple for authentication, and I need to test different scenarios, such as when a user chooses not to share their email.
However, after logging in for the first time, I cannot reset the permissions flow to test again. Even after uninstalling the app, revoking access to the Apple ID in ‘Settings > Apps Using Apple ID,’ and attempting to log in again, only the token (identityToken) is returned, while the full information (email, name, surname) is no longer provided.
This makes it difficult to simulate the initial user behavior, especially when choosing to share or not share their email.
I would like to know:
1. Is there a way to completely reset the permissions flow so I can test as if it were the first time using the same Apple ID?
2. Are there any recommended solutions for development scenarios without needing to create multiple Apple IDs?
Thank you for any guidance on how to proceed.
Problem Situation
User membership withdrawal request → revoke API call
It always returns status code 200, but once out of 5~10, it remains an app linked to the user's Apple ID.
Re-request user Apple login → Email is returned as null
Currently, the only solution is for users to manually delete apps linked to their Apple ID. Email sent when re-requesting Apple login
When the above problem occurs, even if the Revoke API is called multiple times, the app linked to the user's Apple ID is not deleted, and when requesting Refresh Token validation, it has already expired.
Releated Issues
https://forums.developer.apple.com/forums/thread/707181
I am developing a custom authorization plugin for macOS, and I’ve encountered an issue where the auth plugin view remains visible on the home screen for a few seconds after login.
Issue Details:
After entering valid credentials, I call setResult(.allow) in my plugin to proceed with login.
The authentication succeeds, and macOS starts transitioning to the home screen.
However, for a few seconds after login, the authorization plugin view is still visible on the home screen before it disappears.
I have observed this issue even when using Apple's sample authorization plugin.
Observation:
This issue occurs without an external monitor (on a single built-in display).
If I manually close the plugin window inside Destroy(AuthPlugin.mechanism), then the auth plugin views do not appear on the home screen, which seems to fix the issue.
However, when I do this, a gray screen appears for about a second before the desktop environment fully loads.
I suspect that the gray screen appears due to the time macOS takes to fully load the home screen environment after login.
Questions:
Why does the authorization plugin view persist on the home screen for a few seconds after login?
Is manually closing the plugin window in Destroy(AuthPlugin.mechanism) the correct way to prevent this, or is there a better approach?
Is my assumption that the gray screen appears due to the home screen not being fully loaded correct?
If the gray screen is caused by home screen loading, is there a system notification or event I can listen to in order to know when the home screen has fully loaded?
Hello community,
In our application, we've implemented Apple ID for user authentication. Unfortunately, we forgot to register the associated domains and communication email addresses. This oversight has led to complications in email delivery via the private relay service.
We've taken steps to fix the issue by reconfiguring the domains and communication email addresses. Post-adjustment, new user registrations are functioning properly. However, for users who registered before this fix, the problem persists.
We followed the instructions provided on https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/communicating_using_the_private_email_relay_service, and we also have SPF configured, which has passed validation in our administration.
Has anyone encountered a similar issue, and if so, how did you resolve it? Any insights or guidance would be greatly appreciated.
I added a password to Keychain using Swift on macOS.
All works well, and I can see it
using Keychain Access, it is stored under iCloud -> Passwords.
How can I see this password on the Passwords App. Is there something I need to do, maybe in Swift, to have this password in the Passwords App, not just in Keychain Access
Note, I have turn on iCloud Keychain on my Mac: https://support.apple.com/en-us/109016
Our application uses Screen capture KIT API for screen recording.
But from Sequoia OS, we are getting additional permission dialog which states " is requesting to bypass the system private window picker and directly access your screen and audio".
It seems we need to add our app under "System settings -> Privacy & Security -> Remote Desktop" setting to avoid getting above additional dialogue in every few days.
Some places mention use of .plist file that if mention in this file, the app will request for this permission. But did not seem to work or we do not understand that properly yet.
Hello. I want to do the following and need your help.
I want to import a certificate (pkcs#12) into my macOS keychain with a setting that prohibits exporting the certificate.
I want to import the certificate (pkcs#12) into my login keychain or system keychain.
I was able to achieve [1] with the help of the following threads, but have the following problems.
https://developer.apple.com/forums/thread/677314?answerId=824644022#824644022
how to import into login keychain or system keychain
How to achieve this without using the deprecated API
To import into the login keychain, I could use the “SecKeychainCopyDefault” function instead of the “SecKeychainCopySearchList” function,
However, both of these functions were deprecated APIs.
https://developer.apple.com/documentation/security/seckeychaincopysearchlist(_:)
https://developer.apple.com/documentation/security/seckeychaincopydefault(_:)
I checked the following URL and it seems that using the SecItem API is correct, but I could not figure out how to use it.
https://developer.apple.com/documentation/technotes/tn3137-on-mac-keychains
Is there any way to import them into the login keychain or system keychain without using these deprecated APIs?
Has anyone launched a game for kids using Unity Analytics? I am not understanding if Unity Analytics is considered a "third party".
And has anyone successfully shipped a game for kids with Unity Analytics? And if not, has anyone solved the issue Apple rejecting submission?
Topic:
Privacy & Security
SubTopic:
General
I have a macOS package (.pkg) that checks for installed Java versions on the machine during the preinstall phase using a preinstall script. If the required Java version is not found, the script displays a message using osascript as shown below.
/usr/bin/osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "Java Development Kit (JDK) 11 is required" buttons{"OK"} with title "Myprod Warning"' -e 'end tell'
So far, no issues have been observed with the installation of my package on all versions of macOS. However, on macOS 15.2, the installation is failing with a "Not authorized to send Apple events to Finder" error.
Could someone please help me understand what might be causing this issue and how to resolve it?
Topic:
Privacy & Security
SubTopic:
General
We have the below Implementation in Android and the same has to be integrated into Swift.
Key :- "d95acd54b4a821ff32c52825q931c194"
IV :- "687b9509c25a34b8ad076346s8353d67"
Here Both the Key and IV are 32 bits and below is the android code.
public class AESEncryption {
private static final String key = "d95acd54c6a821ff32c52825b931c194";
private static final String initVector = "687b9509c25a14b8ad076346d8353d67";
static byte[] bte = hexToBytes(initVector);
public static String encrypt(String strToEncrypt) {
try {
CommonCode.showLog("log", bte.toString());
IvParameterSpec iv = new IvParameterSpec(bte);
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
CommonCode.showLog("IV after logs", iv.toString());
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(strToEncrypt.getBytes());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return Base64.getEncoder().encodeToString(encrypted).trim();
} else {
return android.util.Base64.encodeToString(encrypted, android.util.Base64.DEFAULT).trim();
}
} catch (Exception e) {
CommonCode.showLog("Error while encrypting: ", e.toString());
}
return null;
}
public static String decrypt(String strToDecrypt) {
try {
IvParameterSpec iv = new IvParameterSpec(bte);
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
} else {
return new String(cipher.doFinal(android.util.Base64.decode(strToDecrypt, android.util.Base64.DEFAULT)));
}
} catch (Exception e) {
CommonCode.showLog("Error while decrypting: " , e.toString());
}
return null;
}
}
How can we mimic the above in Swift?
Here in Android they are using static byte[] bte = hexToBytes(initVector); to convert the 32bit IV into 16 bit Bytes Array
I Have Tried the same approach on Swift below are the code snippet
[Contents.swift](https://developer.apple.com/forums/content/attachment/60fab4f2-1496-4003-9f37-c195de95e94a)
I was in the webview long according to the pictures, and then select "save image" will lead to collapse, I have passed on the info plist add NSPhotoLibraryAddUsageDescription solved it.
Now I have another question, does the last item "query" in the screenshot have a similar problem? Since I couldn't click the button (I don't know why this happened), I couldn't test it on the real machine.
Option 1: Kurz und prägnant
"Hilfe in jeder Situation! Unsere App alarmiert schnell und unkompliziert die Rettungskräfte. Egal wo du bist, wir helfen dir in Notfällen."
Option 2: Detaillierter
"Schnelle Hilfe für alle! Mit unserer App hast du rund um die Uhr einen zuverlässigen Helfer an deiner Seite. Ob du selbst in Not bist oder Zeugen eines Unfalls werden – mit nur einem Klick alarmierst du die Rettungskräfte und erhältst wichtige Informationen. Funktioniert für iOS und Android."
Option 3: Fokus auf die Zielgruppe "Alle"
"Für jeden ein Lebensretter! Egal, ob jung oder alt, sportlich oder weniger beweglich – unsere App ist für alle gedacht, die in einer Notlage schnell Hilfe benötigen. Einfach, intuitiv und immer für dich da."
Option 4: Betonung der Notfallfunktion
"Dein persönlicher Notfallhelfer! In kritischen Situationen zählt jede Sekunde. Unsere App sorgt dafür, dass die Rettungskräfte schnellstmöglich bei dir sind. Perfekt für unterwegs, zu Hause oder am Arbeitsplatz."
Option 5: Hervorhebung der Plattformunabhängigkeit
"Hilfe ohne Grenzen! Unsere App ist für iOS und Android Geräte verfügbar und sorgt dafür, dass du immer und überall Hilfe bekommst. Egal, welches Smartphone du hast, wir sind für dich da."
Möchtest du, dass ich einen Text entwerfe, der alle deine Punkte vereint? Oder hast du weitere Wünsche oder Vorstellungen?
AFAIU a new screen capture notification was added within the Control Center in Sequoia 15.2, see attached examples:
My question is whether there is some way to suppress this notification preferably via an MDM configuration profile.
See also https://discussions.apple.com/thread/255886645?sortBy=rank for more information.
Thanks,
Doron.
I have a sdk which reads and writes data to keychain everything works fine on local machine. But on testflight it can not read the data it previously wrote. every time app starts it tries to read but fails.
I have other apps they works fine with the same sdk and same code on testflight and local. There is keychain access groups in entitlement file. the reason is not entitlement file. Any ideas?
Topic:
Privacy & Security
SubTopic:
General
I don't see any certificates or CAs in the Passwords application, so now what?
Topic:
Privacy & Security
SubTopic:
General
Hi, preivously on appleid.apple.com, navigating to this page on safari would show the in-app modal to continue with Apple.
Now with account.apple.com, this is not the case. We are not seeing the in-app modal to continue with Apple
Topic:
Privacy & Security
SubTopic:
Sign in with Apple
Tags:
Sign in with Apple REST API
Sign in with Apple
Sign in with Apple JS
For starters, I save this IPS in my Files app and the next day permissions were no longer available for me to copy or duplicate. This is a brand new iPhone from Apple. It is a 14 Pro Max any help would be appreciated.
{
SharingViewService-2024-10-15.txt
The sharingview ips
Topic:
Privacy & Security
SubTopic:
General