/r/iOSProgramming
A subreddit to discuss, share articles, code samples, open source projects and anything else related to iOS, macOS, watchOS, tvOS, or visionOS development.
There is an extensive FAQ for beginners. Please browse it first before asking questions that are answered there.
If you are looking to get started (iOS programming in general or some specific area), here are more relevant links for you:
There's too many to list them all, however here's a convenient link to all programming guides at apple.com
Take note that this list is live and based on most frequent questions in posts will be updated with "quicklinks".
/r/iOSProgramming
Hello,
I'm working on an app that helps manage Spotify playlists and, as you can guess, requires a Spotify login.
How do I get this through approval when Apple say:
If your app includes account-based features, provide either an active demo account or fully-featured demo mode, plus any other hardware or resources that might be needed to review your app
I could include a demo version that mimicks the UI but at the end of the day, it would be removing the functionality of the app, making it pointless.
This suggests apps that need a 3rd-party login are ok:
Another login service is not required if:
Your app is a client for a specific third-party service and users are required to sign in to their mail, social media, or other third-party account directly to access their content.
But there's no explanation of how it's supposed to be tested if this is the case.
Would a Spotify account made purely for this purpose be acceptable?
Hi,
I am currently designing a new onboarding flow for my app and want to analyze the effectiveness of the onboarding funnel:
Onboarding Page 1 → Onboarding Page 2 → Onboarding Page 3 → Paywall → Subscribe
My goal is to understand how efficiently this flow drives sales. Additionally, I would like to perform A/B testing to compare the new onboarding flow with the previous one.
My app is already integrated with Firebase Analytics, Google Analytics, and RevenueCat. However, I find the funnel setup in Google Analytics somewhat complex for my needs.
https://i.imgur.com/ivOQn7S.png
Is Google Analytics the right tool for this purpose? If not, could you recommend a beginner-friendly tool for funnel analysis and A/B testing?
Thank you!
I've got a few hundred users for my app along with about 50+ TestFlight users since it launched in mid November.
I've only ever gotten feedback from two TestFlight users via the TestFlight app.
I've gotten feedback from regular users but only via Reddit and usually as a comment on a post where I was promoting my app.
Aside from the "Send Feedback" button in the TestFlight app, I also have an About section in my app with a button to contact me via email.
When I release a new TestFlight build, aside from the build description that testers receive, I have no more communication with them, even if I ask for people to test something I never get feedback.
There's times when I'd like to send a message to my testers and I'd like to have an easy way for non-testers to report bugs.
What's the best way to do this? Should I set up a ticketing system? Should I add links to the app's subreddit and social media accounts?
I have some ideas for an enhanced keyboard experience for iPhone but they do not involve changing anything about the UX. They're all behind the scenes tricks that a user might find useful (I know I would personally).
Does Apple permit developers to create custom keyboards that look and act like the default one (just with some minor tweaks)?
Thanks!
I currently have a paid app in the store that I am considering changing to a freemium app with a yearly/lifetime subscription model.
I know some people just make a new app and push users to that one, but I do not want to do that and lose my ranking and reviews. I'm ok with existing users continuing to use it without a subscription.
Thanks
Hey,
I'm playing around with passes generation and I would like to know if it was possible to generate identifiers and certificates without going through the apple developer website ? If so, how ?
The issue I encounter is that my passes are stacked and I would like each one of them to have their own spot
I can't login to my developer account. It just says we'll be back soon . I also can't upload any builds to app store connect. Its stuck at selecting account.
Hi all,
I’ve been working for companies, direct/contractor/consultant since 2017 (8-9 YOE).
I want to become an indie dev, is there any mentor/coach here to kind of guide me on this transition? I’m willing to pay.
Not sure if it’s realistic to search for this. But looking for someone that is currently living from its own products (with evidences).
Thanks in advance! I will really appreciate any suggestions ❤️
Ok. Here is a view. Each word is a button. In order to get the words to wrap properly I had to calculate the width of each word before appending it to a row. I want to have a toolbar button that is enabled only when a user has clicked a word. Here is what I find strange: if the @ State variable is on the parent view, the view will re-render itself when a word is clicked.. if it's on the child view it won't! Putting the @ State variable on the child view will force me to put the toolbar on the child view as well. But if I put the toolbar button on the child view then I will have more than button because the child view is part of a ForEach..
(Excuse the backwards order of the words, this is just an example screenshot, but I'm working with a RTL language)
Hello iOS Pros,
I have been an spectator all the interesting conversations happening here but today thought i could ask some help from you.
I have built an app as an hobby but a little hesitant to submit it to the store but very much want to so I can get exposes to the process.
What are the do's and dont's that i should be cautious about, how long does it take for review, how easy it is to say edit the listing or the app store screenshot and things like these would help me plan.
Please share your thoughts and learning. Thanks
I need to integrate https://github.com/open-telemetry/opentelemetry-swift in my app. But documentation seems to be minimal and not helpful. Has anyone tried it or any working example from where I can take the reference for this.soi
Hey everyone,
I'd really appreciate your help and guidance..
I'm 27 years old. An engineer in my local country (Morocco). I currently have made 30 apps in the AppStore using Swift and SwiftUI. Variety of apps using external APIs, Databases and Ai...
I have saved some money (+50,000$) using these apps... I want to immigrate to the US, get a graduate university degree in CS or Mobile Dev... and apply for jobs.
My reasons are:
- I'm sick of my 3rd world country
- I literally have 0 motivation to stay independent right now.. I'm just too bored with my work... I want to join a company, a team and see how big teams work together
- I just want a new challenge, something new in my life..
- If I can land a high 5 figures to 6 figures job that would be fantastic
My questions are:
- Any university you guys recommend for higher chances of landing a job?
- How's the job market right now? And how is it going to be from 1 to 2 years from now when I'll get a degree from a US university?
- What do you think of my plan? Go to a US university, get a degree in CS then apply for jobs?
Thank you so much
PS: Any advice is helpful for me... please feel free to share whatever you want!
It happens that in my app store connect I get this message "Build 1 missing compliance documents in review", and it has been like this for more than 2 weeks. How long is the approximate time it can be in review? I have written to support but they still haven't responded.
My subscription keeps getting stuck in "Developer Action Needed" without a lot of information on what's missing. In other parts of the dashboard I can see that my most recent app version was rejected because the "Buy Premium" button doesn't work. I submitted that version in order to get the subscription approved (because Apple says "Your first subscription must be submitted with a new app version."), so that I could implement the subscription within my app.
Stuck in a circular dependency. So now I can't get my app approved because the user is unable to purchase a subscription from within my app. And I can't get my subscription approved because my app version has been rejected. And I can't get my app approved because my subscription is rejected. And I can't get my subscription approved because my app is rejected...
Am I thinking about this wrong, or is this a bug that I need to report? I would assume that Apple would approve my subscription, then I can implement the subscription in my app, then I can submit my fully functional app to Apple for review and approval. I don't understand why my subscription has to be created with a new app version, and why Apple wants to review a subscription independently of an app review (but you also have to submit them together).
This whole thing is very confusing to me.
My main app stop working completely as soon as I changed the models. I simplified this to about as basic of a scenario as I could but I'm still getting "error: the replacement path doesn't exist" in my terminal when I run this code. I've already tried clearing the Simulator in every which way and it did not solve the issue.
I know it sounds ridiculous and app's like Duffy exist which only read HelathKit data, but I am having issues with just trying to read steps data.
HealthKitManager -
@MainActor
class HealthKitManager {
static let shared = HealthKitManager()
private var healthStore = HKHealthStore()
enum AuthorizationState {
case notDetermined
case authorized
case denied
case restricted
}
func checkAuthorizationStatus() -> AuthorizationState {
let stepCountType = HKQuantityType(.stepCount)
let status = healthStore.authorizationStatus(for: stepCountType)
switch status {
case .notDetermined:
return .notDetermined
case .sharingAuthorized:
return .authorized
case .sharingDenied:
return .denied
default:
return .restricted
}
}
func requestAuthorization() async throws {
guard HKHealthStore.isHealthDataAvailable() else {
throw HealthKitError.notAvailable
}
try await healthStore.requestAuthorization(
toShare: [HKQuantityType(.stepCount)],
read: [HKQuantityType(.stepCount)]
)
}
enum HealthKitError: Error {
case notAvailable
}
}
If I only provide read
parameter values and let toShare
be empty, I always end up with the denied case. However, if I provide values for both arguments, it works (authorized). What could be the issue here?
Hi everyone,
I'm building my first app ever and I plan to add iCloud Sync ability to it so it syncs user data to the cloud... not as much to sync between devices but most importantly to allow user to recover data in case they change devices.
I'm thinking about releasing the app without iCloud Sync and add this in a future update soon after. Do you see any issues with this approach?
My Swift Data models became a a bit complex over the development with a lot of relationship between different data models and rewriting code to make the relationships optional will probably take some effort that I'd rather channel to releasing the app.
Hi everyone, I’ve been working on a few iOS apps that I’m really proud of, but unfortunately, I couldn’t gain traction due to a lack of marketing experience and limited organic downloads. Instead of letting these projects gather dust, I’ve decided to sell the apps along with their source code.
If you’re a developer looking for solid starting points or an entrepreneur wanting to polish and launch apps with potential, this could be a great opportunity.
I focused more on app development than marketing, which limited my ability to promote these apps effectively. These projects deserve someone who can take them further, and I’d love to see them succeed under new ownership.
I’m open to discussing reasonable offers for one or all apps. Feel free to DM me for more details, app previews, or any specific questions you have.
Thank you for reading, and I’d love to connect if this opportunity resonates with you!
Let me know if you’re interested or have any advice for someone in my position – I’d truly appreciate it. 😊
Crash log:
#00x0000000105164214 in _dispatch_assert_queue_fail ()
#10x00000001051641a0 in dispatch_assert_queue ()
#20x00000002493a0400 in swift_task_isCurrentExecutorImpl ()
#30x0000000105fc457c in closure #1 in closure #1 in AppDelegate.applicationDidBecomeActive(_:) ()
#40x0000000105fc4d14 in thunk for u/escaping u/callee_guaranteed (@unowned ATTrackingManagerAuthorizationStatus) -> () ()
#50x00000001cd65c11c in __46+[ATTrackingManager _performTCCAccessRequest:]_block_invoke ()
#60x000000018a46ae14 in ___tcc_server_send_request_authorization_block_invoke.72 ()
#70x0000000105160cd8 in _dispatch_call_block_and_release ()
#80x00000001051625d0 in _dispatch_client_callout ()
#90x0000000105165410 in _dispatch_queue_override_invoke ()
#100x00000001051764b0 in _dispatch_root_queue_drain ()
#110x0000000105177058 in _dispatch_worker_thread2 ()
#120x000000010456bb38 in _pthread_wqthread ()
code causing the crash:
@MainActor
func applicationDidBecomeActive(_ application: UIApplication) {
print("ATTrackingManager.requestTrackingAuthorization applicationDidBecomeActive")
DispatchQueue.main.async {
print("ATTrackingManager.requestTrackingAuthorization DispatchQueue.main.async")
ATTrackingManager.requestTrackingAuthorization { status in
print("ATTrackingManager.requestTrackingAuthorization")
if status == .authorized {
let parameters = UMPRequestParameters()
parameters.tagForUnderAgeOfConsent = false
UMPConsentInformation.sharedInstance
.requestConsentInfoUpdate(with: parameters) { [weak self] error in
guard let self = self else { return }
if let error = error {
print(
"Error updating consent info: \(error.localizedDescription)"
)
} else {
if UMPConsentInformation.sharedInstance.formStatus == .available {
loadForm() // already on main actor
}
}
}
}
GADMobileAds.sharedInstance().start(completionHandler: nil)
}
}
}
Anyone else get this banner in User Access -> Sandbox?
0 should be less than 10000 if I did the math right...
A screenshot showing a Nearing Test Account Limit warning for nearing 10,000 test account
Hello,
Can someone please help me solve this issue?
Do I need to change anything because of the new apple requirement "App Store Receipt Signing Certificate" https://imgur.com/a/KUGn3Ja
I have been using open source MKStoreKit for years, can someone please look at this code and help me figure out if I can keep using this or not? https://github.com/MKSG-MugunthKumar/MKStoreKit/blob/master/MKStoreKit/MKStoreKit.m
I can't figure out if mkstorekit is doing on device receipt validation?
Here is a quote from apples doc (https://developer.apple.com/documentation/technotes/tn3138-handling-app-store-receipt-signing-certificate-changes)
"If your app verifies App Store receipts on the device, follow the instructions outlined in this document to ensure that your receipt validation code is compatible with this change."
Thank you
I want to use my app, so I can install the dev build from xcode or the test flight that expires. I don’t want to buy my own as Apple takes a cut.
What do you do?
I've found one previous thread (about a year old with updates up to about six months ago) wherein another user had a similar application in mind. It appear that around 6 months ago Apple approved and enabled a process so that users *in the European Union* can get the required entitlements so that Card Session can be used for HCE for non-payment use cases. Does anyone know if this implies a non-US limitation and/or if this limitation is likely to continue?