Posts

Post not yet marked as solved
1 Replies
Check out the App Store Review Guidelines: https://developer.apple.com/app-store/review/guidelines/ Specifically sections: 3.1.1 In-App Purchase 3.1.5 Cryptocurrencies 5.3 Gaming, Gambling, and Lotteries I think this is the line you're looking for from 5.3.3 that states "Apps may not use in-app purchase to purchase credit or currency for use in conjunction with real money gaming of any kind."
Post marked as solved
2 Replies
There are still a handful of things you can do in UIKit for UITabViewController that you can't in SwiftUI (even with iOS 16). If you want to mix and match, you can use a UIHostingController and shove your SwiftUI view inside one then add the hosting controller as a child of the UITabViewController.
Post not yet marked as solved
1 Replies
Go into the Maps app and report an issue on the location place mark. I've had several missing or incorrect business listings fixed that way for breweries. Or the owner of the facility if they manage a Maps Connect account they could update information that way too. https://register.apple.com/placesonmaps/
Post marked as Apple Recommended
I asked the same thing during WWDC22 Labs and the API behavior and design is pretty much on lock down. Taking hints from the system and the use cases that Apple has demonstrated, a package delivery, a sports event score change, a ride share service, these are all things that seem to be remote server updated. Meaning the phone can't do them on their own. Maybe you could do a conference planner/scheduler Live Activity that is all locally cached, but the use cases were telling to me. I have to imagine it will look like WidgetKit but have some aspect of content-available push that maybe goes right to your widget / live activity extension. Or to your app and then reload timeline if truly like widget kit. I'd also bet that just like widgets on home and Lock Screen, Live Activities will be 100% SwiftUI for visuals. So my vote goes to learning "systemMedium" widget family, and SwiftUI. If you make a systemMedium Home Screen widget visually, hopefully it would be reusable for your live activity view. Out of curiosity, what is your use case? How often would you want to refresh the live activity? This was also something I talked about in my lab, trying to get info on refresh policies--nothing :) Guess we will have to wait. I was encourage to #filefeedback on my ideas for Live Activities so Apple can see what we want to build.
Post not yet marked as solved
1 Replies
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.
Post not yet marked as solved
12 Replies
@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
Post not yet marked as solved
1 Replies
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!
Post marked as solved
4 Replies
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.
Post marked as solved
4 Replies
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
Post marked as solved
1 Replies
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?
Post marked as solved
3 Replies
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
Post not yet marked as solved
3 Replies
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
Post marked as solved
1 Replies
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.
Post not yet marked as solved
3 Replies
Watch this video and it will describe the enhancements made this year in full detail for the new resultBlock closures (and new async methods too!) Having migrated over to the new API, it is really a nice update though some of my closures were gnarly (doing atomic processing with records that referenced each other as an example). What's New in CloudKit WWDC21
Post not yet marked as solved
2 Replies
How much data are you trying to synchronize when the user has the feature enabled? You could have two containers, one that is local only, and the other that is the cloud container. I'm not sure that simply 'flipping the switch' would propagate / synchronize as fast as the user is expecting. The difficult part with this approach would be migrating the data from one store to the other as they change the value.