Post

Replies

Boosts

Views

Activity

Reply to How to open specific app clip settings in Swift?
@JJY, did you #filefeedback for this? The documentation for the openSettingsURLString describes "app" so my guess is that the behavior is expected. That having been said, I agree it would be nice to direct the user to correct permission issues if they want to access a feature they previously denied authorization for. I just filed mine requesting app clip settings url: FB10346783
Topic: App & System Services SubTopic: General Tags:
Jun ’22
Reply to Retrieving a List of Known BLE Peripherals
There was a developer video a few years back that described the behavior of attribute caching. I want to say that attributes are cached if your devices is paired/bonded. Also, for things to work right, your peripheral needs to support the services changed service and characteristic. Attribute caching is a funny business. When ever coworkers ask me about it on iOS / Android I refer them to an article published by Punch Through. Search for "Punch through attribute caching" on the web and it should be one of your first hits. The forums tool said I couldn't post it here directly for some reason.
Jun ’22
Reply to Driving NavigationSplitView with something other than List?
@Jaanus, Have you tried composing your NavigationSplitView with a NavigationStack as your detail? You can then control push / pop behavior with a bound NavigationPath type. You mentioned your button doesn't push anything on the navigation stack, but I don't see a NavigationStack in your view's body. All of my views are List driven but worth a shot. If you haven't already seen this video, check it out: https://developer.apple.com/wwdc22/10054
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jun ’22
Reply to SwiftUI toolbar text size changes on appear
@MintChoco, have you made a feedback for this? From user perspective it is undesired behavior if they have small font. I think the system is trying to honor that but then realizes "I'm in a nav bar item, I need standard size". Seems like a defect to me. Post your Feedback # in here and when I get around to capturing one I'll do the same and we can reference each other.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Apr ’22
Reply to Local Experiences seems to be missing in iOS 15.4
iOS 15.4.1 has also resolved the issue on my devices. I also noticed a new "diagnostics" in both App Clips and Universal Links that lets you locally test the pathway to your server. I assume this is a mini AASA job that they're running. Maybe it isn't new with 15.4.1, but very cool and handy just the same. Closed out my feedbacks FB9961137 and FB9961139.
Topic: App & System Services SubTopic: Core OS Tags:
Apr ’22
Reply to Local Experiences seems to be missing in iOS 15.4
I am also experiencing this on several of my devices. It worked before in an earlier iOS 15.x release, but I cannot find the "Local Experiences" listing on iOS 15.4 public release either within the Developer settings pane. This makes it impossible to test some experiences as well as having the App Clip card be shown for local demonstrations to business partners. @eskimo, can you help get some visibility to this? The instructions for testing App Clips locally is unchanged from the documentation. On your test device, open the Settings app, navigate to the iOS developer settings by choosing Developer > Local Experiences, and select Register Local Experience. I created a few feedbacks: App Clips Framework: FB9961137 Xcode Developer Tools: FB9961139 Feedback Assistant: FB9961143
Topic: App & System Services SubTopic: Core OS Tags:
Mar ’22
Reply to location service IOS 15.0.x and 15.1.x
The experience within the settings application, both your app listing and the location services will only show your app AFTER your code has made a request via one of the several authorization APIs. Do you have an onboarding experience or request permission at the time of usage (like when showing a map)? I've been actively developing and using all of the latest iOS versions and have not observed this in my fitness app, my competitors, or the new app I'm developing using location updates, region monitoring, significant location change, etc. That having been said, I know that requesting location authorization on some watch simulator configurations does NOT show the authorization prompt on the simulator. The same code works on a real device. Probably worth sending in a feedback with a sysdiagnose if you can reproduce something like that on a physical device. Out of curiosity, which features of Core Location are you using that doesn't appear to be working?
Jan ’22
Reply to How to hide an auto-renewal subscription from App Store manage subscriptions page
Are your two subscription products part of the same subscription group, or not organized in groups at all? If so, I think this is by design and not allowed to 'hide' it from the user. If they're in the same group it is treated like 'tiers' and the user has the ability to switch between the levels. What I'd do is ensure that they are in two different groups, call one "legacy" and the other "current". Within your "legacy" have the following subscription product: Original Price for early adopters that get grandfathered in price Within your "current" group, have the following subscription product: New Price for new users I assume your logic does something to the effect of if account created before cutoff date, offer reduced rate, else show new pricing. The idea is that when the user elects to manage their subscription, they will ONLY be shown what is within the same subscription group (I think if you don't use groups they see all products?). So, ensure they're in the correct group, and they'll only be able to manage those options. One thing you'll have to prevent in your UI, is disallow the user from subscribing to a product within both groups. Take a peek in the developer app for some of the WWDC presentation and tech talks. Here are a few links to get you started: Architecting for Subscriptions Designing for Subscription Success Engineering Subscriptions
Topic: App & System Services SubTopic: StoreKit Tags:
Jan ’22
Reply to Is it necessary to have a user registration mechanism if app has subscriptions?
Sounds to me like a simple "Restore Purchases" workflow would get you in compliance with requirement 3.1.2. Yes, a user who is signed in with their AppleID will have access to their purchases across devices, but only if you've implemented the logic to make it happen. Do you have this? If so, I'd point it out to App Review, otherwise, it is a miss and you should implement it. This does two things: Allows the user to restore that purchase (subscription) on the same device if they uninstalled and reinstalled your app Allows the user to access the content on all of their iOS devices. This would be a great opportunity to take a look at the new StoreKit 2 APIs along with the new on-device receipt validation. Meet StoreKit 2
Topic: App & System Services SubTopic: StoreKit Tags:
Jan ’22
Reply to Apple CloudKit async function Doesn't Look Right
The new signatures will give you a per-record result of Result<CKRecord, Error> as described in the method signature. So when you ask for records with IDs "ABCD" and "EFGH", lets say only ABCD exists, you'll get a dictionary back with two key-value pairs, the first being ABCD with the result value of .success(CKRecord) and the second of EFGH and .failure(UnknownItem). Have a watch of the session you linked (10086) from 2021 and take note of the changes to the CKFetchRecordsOperation. The same thinking to the per-record error reporting also makes its way into the convenience methods on CKDatabase.
Jan ’22
Reply to How to open specific app clip settings in Swift?
@JJY, did you #filefeedback for this? The documentation for the openSettingsURLString describes "app" so my guess is that the behavior is expected. That having been said, I agree it would be nice to direct the user to correct permission issues if they want to access a feature they previously denied authorization for. I just filed mine requesting app clip settings url: FB10346783
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jun ’22
Reply to Retrieving a List of Known BLE Peripherals
There was a developer video a few years back that described the behavior of attribute caching. I want to say that attributes are cached if your devices is paired/bonded. Also, for things to work right, your peripheral needs to support the services changed service and characteristic. Attribute caching is a funny business. When ever coworkers ask me about it on iOS / Android I refer them to an article published by Punch Through. Search for "Punch through attribute caching" on the web and it should be one of your first hits. The forums tool said I couldn't post it here directly for some reason.
Replies
Boosts
Views
Activity
Jun ’22
Reply to Using Apple Watch as CBPeripheralManager
@pjb493 did you #filefeedback? Also, is your need "real time" or are you just sending data after the fact?
Replies
Boosts
Views
Activity
Jun ’22
Reply to Driving NavigationSplitView with something other than List?
@Jaanus, Have you tried composing your NavigationSplitView with a NavigationStack as your detail? You can then control push / pop behavior with a bound NavigationPath type. You mentioned your button doesn't push anything on the navigation stack, but I don't see a NavigationStack in your view's body. All of my views are List driven but worth a shot. If you haven't already seen this video, check it out: https://developer.apple.com/wwdc22/10054
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jun ’22
Reply to TabView selection deprecated?!
I'm hoping to be able to detect a tab tap while the tap is already selected so I can reset / pop my new NavigationStack back to root. Fingers crossed further TabItem control comes this year!
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jun ’22
Reply to TabView selection deprecated?!
Xcode 14 tells you to use the new "SelectableTabsBuilder", but I haven't found anything on that yet. Hopefully Beta 2 we will see it.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jun ’22
Reply to SwiftUI toolbar text size changes on appear
@MintChoco, have you made a feedback for this? From user perspective it is undesired behavior if they have small font. I think the system is trying to honor that but then realizes "I'm in a nav bar item, I need standard size". Seems like a defect to me. Post your Feedback # in here and when I get around to capturing one I'll do the same and we can reference each other.
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Apr ’22
Reply to App Privacy: Should I disclose Contact usage if using CloudKit's discover user identity feature?
@MobileTen, thanks for sharing your thought. No third party, my privacy policy describes how iCloud works to developers, and the social aspect isn't a focus right now. Maybe in the future I'll add it since not all users will understand "Apple does the lookup for me, I never access your contacts directly". :)
Replies
Boosts
Views
Activity
Apr ’22
Reply to Local Experiences seems to be missing in iOS 15.4
iOS 15.4.1 has also resolved the issue on my devices. I also noticed a new "diagnostics" in both App Clips and Universal Links that lets you locally test the pathway to your server. I assume this is a mini AASA job that they're running. Maybe it isn't new with 15.4.1, but very cool and handy just the same. Closed out my feedbacks FB9961137 and FB9961139.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Apr ’22
Reply to Local Experiences seems to be missing in iOS 15.4
I am also experiencing this on several of my devices. It worked before in an earlier iOS 15.x release, but I cannot find the "Local Experiences" listing on iOS 15.4 public release either within the Developer settings pane. This makes it impossible to test some experiences as well as having the App Clip card be shown for local demonstrations to business partners. @eskimo, can you help get some visibility to this? The instructions for testing App Clips locally is unchanged from the documentation. On your test device, open the Settings app, navigate to the iOS developer settings by choosing Developer > Local Experiences, and select Register Local Experience. I created a few feedbacks: App Clips Framework: FB9961137 Xcode Developer Tools: FB9961139 Feedback Assistant: FB9961143
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Mar ’22
Reply to location service IOS 15.0.x and 15.1.x
The experience within the settings application, both your app listing and the location services will only show your app AFTER your code has made a request via one of the several authorization APIs. Do you have an onboarding experience or request permission at the time of usage (like when showing a map)? I've been actively developing and using all of the latest iOS versions and have not observed this in my fitness app, my competitors, or the new app I'm developing using location updates, region monitoring, significant location change, etc. That having been said, I know that requesting location authorization on some watch simulator configurations does NOT show the authorization prompt on the simulator. The same code works on a real device. Probably worth sending in a feedback with a sysdiagnose if you can reproduce something like that on a physical device. Out of curiosity, which features of Core Location are you using that doesn't appear to be working?
Replies
Boosts
Views
Activity
Jan ’22
Reply to How to hide an auto-renewal subscription from App Store manage subscriptions page
Are your two subscription products part of the same subscription group, or not organized in groups at all? If so, I think this is by design and not allowed to 'hide' it from the user. If they're in the same group it is treated like 'tiers' and the user has the ability to switch between the levels. What I'd do is ensure that they are in two different groups, call one "legacy" and the other "current". Within your "legacy" have the following subscription product: Original Price for early adopters that get grandfathered in price Within your "current" group, have the following subscription product: New Price for new users I assume your logic does something to the effect of if account created before cutoff date, offer reduced rate, else show new pricing. The idea is that when the user elects to manage their subscription, they will ONLY be shown what is within the same subscription group (I think if you don't use groups they see all products?). So, ensure they're in the correct group, and they'll only be able to manage those options. One thing you'll have to prevent in your UI, is disallow the user from subscribing to a product within both groups. Take a peek in the developer app for some of the WWDC presentation and tech talks. Here are a few links to get you started: Architecting for Subscriptions Designing for Subscription Success Engineering Subscriptions
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jan ’22
Reply to Is it necessary to have a user registration mechanism if app has subscriptions?
Sounds to me like a simple "Restore Purchases" workflow would get you in compliance with requirement 3.1.2. Yes, a user who is signed in with their AppleID will have access to their purchases across devices, but only if you've implemented the logic to make it happen. Do you have this? If so, I'd point it out to App Review, otherwise, it is a miss and you should implement it. This does two things: Allows the user to restore that purchase (subscription) on the same device if they uninstalled and reinstalled your app Allows the user to access the content on all of their iOS devices. This would be a great opportunity to take a look at the new StoreKit 2 APIs along with the new on-device receipt validation. Meet StoreKit 2
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jan ’22
Reply to Apple CloudKit async function Doesn't Look Right
The new signatures will give you a per-record result of Result<CKRecord, Error> as described in the method signature. So when you ask for records with IDs "ABCD" and "EFGH", lets say only ABCD exists, you'll get a dictionary back with two key-value pairs, the first being ABCD with the result value of .success(CKRecord) and the second of EFGH and .failure(UnknownItem). Have a watch of the session you linked (10086) from 2021 and take note of the changes to the CKFetchRecordsOperation. The same thinking to the per-record error reporting also makes its way into the convenience methods on CKDatabase.
Replies
Boosts
Views
Activity
Jan ’22
Reply to Upload operation complete but not found by CKQuery few minutes
Do you mean uploaded via CKModifyRecordsOperation? What is the quality of services, did you set it to atomic, 30 pieces of data, does that mean 30 records, or 30 fields on a single record? Can you describe your setup a little more?
Replies
Boosts
Views
Activity
Jan ’22