Is Settings.bundle deprecated? What required-reason API code to use?

I'm referring to the use of a "settings bundle" plist to cause the main Settings app to display your app's preferences which the app can then read via NSUserDefaults, as described here:

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html#//apple_ref/doc/uid/10000059i-CH6

I am wondering if this is actually deprecated, or something. I ask because, (1), it still has the high-quality old-style documentation, and (2) there doesn't seem to be a "required reason API" code for using it.

Specifically, the NSUserDefaults required reason API codes are

CA92.1 : "This reason does not permit reading information that was written by other apps or the system"

1C8F.1 : "This reason does not permit reading information that was written by apps, app extensions, or App Clips outside the same App Group or by the system."

C56D.1: "...third-party SDK..." - nope.

AC6B.1: "... com.apple.configuration.managed ..." - nope.

None of the codes permit reading preferences that have been set by the Settings app using this method.

Settings bundles are not deprecated.

Given that the Settings bundle is your ‘code’, I’d argue that it falls into the category of your app reading its own preferences.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi Quinn, thanks for your reply.

the category of your app reading its own preferences

I don’t see any such category. Which code are you referring to?

BTW, do you understand the actual privacy issue here? Is it true that apps can illicitly read other apps’ NSUserDefaults values, and/or global settings? If so, is there a good reason for that being possible? Can it not be blocked by a technical change?

The reason codes refer to “information that is only accessible to the app itself” (etc). Is there something that I need to do to make NSUserDefaults not accessible to other apps?

Is Settings.bundle deprecated? What required-reason API code to use?
 
 
Q