One of my App's targets produces a .saver module, but I have failed to figure out how to notorize it, is this possible?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have an App that builds for iOS, iPadOS, macOS and Apple TV, which was last released to all the App Stores in April. Preferences/settings are handled by the App itself except for the Apple TV variant, where I use a Settings bundle. This worked fine until tvOS 15.0, where it appears that tvOS is not updating the value of the App’s settings from NSUserDefaults when the Settings App opens. I have been working on this problem off and on for the last week and am at wits end.
I’ve searched WWDC videos looking for a clue, there must be some simple change I cannot see. I’ve made clean projects for iOS and tvOS, and using the identical OBJ-C code and Settings plist entries, the iOS version works perfectly, the tvOS version fails in the simulator and on the device. I am not trying to synchronize Settings across devices, just persist across restarts on a single device.
My code stores data correctly in NSUserDefaults, it simply seems that tvOS Settings App is not reading values from there for display, nor writing changes that the user makes from Settings back to user defaults. None of the types in the test projects work: TexField, Switch, Title.
The test code is so simple I hesitate to include it, but the code and the NSUserDefaults key identifiers do match. This code will preset my App’s version number for Settings to display in iOS 15 but not tvOS 15. It used to work in tvOS 14:
<key>DefaultValue</key>
<string>DefaultVersionValue</string>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>Title</key>
<string>Version</string>
<key>Key</key>
<string>VersionKey</string>
</dict>
``` NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud registerDefaults:@{
@"TextFieldKey" : @"TextFieldValue",
@"VersionKey" : @"VersionValue"
}];
[ud setObject:@"3.14" forKey:@"VersionKey"];
Any idea? Many thanks.
I am looking for guidance.
Briefly: when Mac Catalyst first came out there was no App Store Connect issue, and I was able to place three related apps on the Mac App Store. Indeed, those Apps also built and ran on iOS and tvOS so could be used on an iPod, iPhone, iMac and a large screen TV. Now I cannot upload new binaries for 2 of the 3 Catalyst Apps, only the App with its App ID Prefix == my TEAM_ID will upload.
The other two Apps date from the early times of the iOS Store and have random but unique App ID Prefix values, instead of the TEAM_ID. The upload issue is:
It’s important to me to get these Catalyst updates out because Monterey changes cause them to crash when, for instance, the user does something innocuous like clicking the About menu (HTML vs RTF bug). But I also want to make feature updates.
Details: the bundle named GO is an interface between UIKit and AppKit, so I can access window resize/fullscreen methods (to make the review team happy), and interfaces like NSOpenPanel, NSSavePanel, NSColorPanel and NSWindow (to make me happy).
I am asking advice on how to proceed to get new Catalyst binaries uploaded, and these are some of the ideas I have come up with, none of which are pleasing to me:
Do not use the AppKit bundle GO at all, and have the macOS experience fail. Obviously I do not want to do this.
Keep the Catalyst version frozen, Monterey bugs and all, and only update iOS and tvOS. Yuck.
Use a new App ID that has my TEAM_ID as the App ID prefix. This works, but has the terrifying result that the App is now entirely new and has to be re-purchased. Right now, the three apps are Universal: universal in that one purchase gets iOS/macOS/tvOS versions, and on macOS universal Intel/ARM. I think Apple is driving in this direction, Apps that just work, everywhere, and that’s what this 70-year old is trying to do.
So how can I realize this universal idea without impacting users? I notice that to GO bundle as Xcode creates it has no profile and no entitlements. Is it possible to make a minimal profile with com.apple.application-identifier (and application-identifier) values that match the old-style non-TEAM_ID, and how do I do that?
Or can I now access AppKit from Catalyst some other way I am not aware of?
Thoughts appreciated, thanks.