I'm working on a screen where the goal is for the user to walk for 6 minutes while the app times them and measures the distance walked. I'm using CMPedometer to track the walking distance and a repeating 1-second Timer to count down the time.
This works fine as long as the app is in the foreground, but I'd like my user to be able to lock their phone and put it away while they walk. I used UIApplication.shared.beginBackgroundTask, but it doesn't provide enough time. It usually only gives me around 30 seconds. I also tried calling UIApplication.shared.beginBackgroundTask again or calling it once every time the timer ticks, with no better result.
How can I accomplish my goal here?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
My company did an app for a customer 10 years ago. The app has in-app purchases (not subscriptions). It is an Objective-C code base. Over the years we've done minor updates to this app in order to keep it in compliance, but no major overhaul.
The app has been pretty reliable in the past, but recently my customer is getting a flood of complaints from users who say their in-app purchases disappear and can't be restored. It's happening too often to just be a case of bad internet connection or similar issue. The only thing that seems to be consistent is that it's never US-based users.
Whenever I test this app using sandbox accounts, I cannot reproduce the problems that are being reported. I'm always able to make purchases and restore them after reinstalling the app, or restore them to a different device. The content associated with the purchases always downloads correctly, even if I intentionally interrupt and restore internet access.
What can I do to figure this out? Should an IAP based app from 2014 be expected to work correctly today? Are there new legal issues with non-US app stores that we need to be aware of?
I realize there isn't a lot to go on here, but I don't have any more information.
Thanks,
Frank
If I'm talking to a Bluetooth (BLE) device using the Core Bluetooth functions, and I need to send or receive multiple packets (such as if I need to communicate a large message) is it guaranteed that the packets will arrive in the same order they were sent?
I have a customer who wants to protect the REST API of their app with a private certificate. They would then distribute the client certificate to the authorized users. Their app would not work unless the client certificate is already installed on the user's phone before they run the app.
I have never done this before. Is it possible to install a client certificate on an iPhone without running an app, for example if it were sent in an email message?
And if it is possible, is App Review going to let such an app into the app store?
Thanks,
Frank
I have an extremely straightforward situation where an @IBOutlet in a ViewController is connected to a property in an XIB file. I've been working with iOS apps for more than ten years, and done this about a million times.
For some reason, the property becomes nil at some point after the view is loaded. I can check with the debugger to see that it is not nil at viewDidLoad, and there is nothing in my code that sets it to anything else.
I added a custom setter and getter to the variable so that I could stop in the debugger when it gets set, and the setter only gets called once, with a non-nil value.
I suspect that somehow, a different copy of my ViewController is getting instantiated, but when it does, there are no calls to any of the usual methods like viewDidLoad. In fact there is not even a call to the init method. I don't understand how this is possible.
Whenever I make a new app I end up getting bug reports from people who say they can't see text, or they can just about see white text against an almost white background. It always turns out to be because their phone is in dark mode, which I don't use.
Almost all of my views have the background color set to "System background color" which is the default value when you create a view. Why does dark mode change the color of the text but not the background?
I'm setting up Auth0 to work with my app according to their instructions. I need to add an associated domain, but it doesn't work. When I try to use Auth0, it returns a message that says "Application with identifier (my-bundle-id) is not associated with domain (my-auth0-domain)".
In Signing & Capabilities, I have the Associated Domains capability set up with this domain: "webcredentials:(my-auth0-domain)". I also added another version with ?mode=developer on the end of it, but neither works.
I am sure that the domain I'm using is correct because I'm able to use it in Postman to authenticate with Auth0. I checked everything else against their documentation and samples several times.
One of my customers is reporting a crash. He sent me a file called "Analytics-2024-07-08-200041.ips.ca.synced". I don't know what to do with this file. It appears to contain thousands of lines of JSON. I can read them, but the file is too large for me to find any specific problem.
What is this file, how was it generated, and how am I supposed to use it?
When I searched for the answer online, I kept running into instructions asking me to choose tabs or press buttons in Xcode that don't exist. I assume that this is because Xcode changed since those instructions were written.
I did check for crash reports in the Organizer and it does not report any for the current version of my app, or any within the past two weeks for any version.
My company wants to build two apps for two separate product lines, but we want our users to be able to sign in to both apps with the same credentials, and we want Sign In with Apple to be an option. Is it possible to associate the apps with one another in a way that Sign In with Apple will produce the same token for the same Apple ID in both apps?
I need some clarification on what is supposed to happen if the "allowsBackgroundLocationUpdates" flag on CLLocationManager is set to true, and only the "While in Use" permission has been given.
The customer I'm working with thinks that this combination should allow the app to receive location updates in the background indefinitely, as long as the app was in the foreground when we started receiving them.
What we've experienced is inconsistent. App updates do continue when the screen locks and in some cases when we switch to another app, but often they do not.
Our app doesn't require location updates 24/7, it requires them for a period of time when the user is performing an activity. The user starts and stops the activity in the app, and the activity might last up to a couple of hours. Can we do this using "While in Use" or do we need to request "Always" ?
Topic:
App & System Services
SubTopic:
Maps & Location
I'm writing an app in which the user is expected to initiate location tracking, let the app track for a period of time (a few minutes to a couple of hours) and then discontinue tracking. We want the user to be able to switch apps or let their device lock while tracking without losing any location updates.
My understanding is that this can be done with the "While in use" location permission and does not require "Always". We don't want to have to ask our users for the "Always" permission.
I'm configuring the location manager this way:
locationManager.delegate = self locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation locationManager.allowsBackgroundLocationUpdates = true locationManager.showsBackgroundLocationIndicator = true locationManager.distanceFilter = kCLDistanceFilterNone locationManager.activityType = .otherNavigation locationManager.pausesLocationUpdatesAutomatically = false
(The user is expected to be walking around in an outdoor location, stopping occasionally to take notes and pictures).
I've tested this using both an iPhone and an iPad that relies on an external GPS device. It works. I can lock the device and see a continuous stream of location updates in the debugger for hours. I've also tested it while walking outdoors.
However, my customer keeps reporting that the app stops tracking his location whenever it goes into the background. He says that it will track his location fine while in the foreground, but when he backgrounds it, it stops getting location updates. Then when it comes into the foreground again, it resumes. When we plot the locations on a map, you see a straight line between the place where the app went into background and where it woke up again. We know for sure that the app is just transitioning to and from the background and that it is not being terminated and restarted.
I can't reproduce this result on my devices and can't figure out what I'm doing wrong. The customer says he has another app on his device (which is also an iPad with an external GPS) and that the other app does track him when it is in the background.
My app does process all of the locations received in the didUpdateLocations method and not just the last one, so it's not that I'm getting the updates and ignoring them. I'm also not receiving any calls to 'locationManagerDidPauseLocationUpdates', 'didFinishDeferredUpdatesWithError', or 'didFailWithError'.
The only explanation I can think of at the moment is that something changed in iOS. I know that the other app my customer is using is fairly old and built against an old version of the iOS SDK.
Thanks for your help.
I'm unable to use Organizer due to this error.
The app shown in the error message is an old, unused test app. I'd delete it if I could, but there doesn't seem to be a way to do that.
The app is named "@Home Test" and I suspect that the @ character is what's causing the problem.
I need to use Organizer for a completely different app on another team, but I can't get past this.
Topic:
Developer Tools & Services
SubTopic:
Xcode
I've been aware for some time that Push notifications work on the iOS simulator now -- I see them pop up while I'm working.
However, it would seem that SILENT push notifications do not work. I came to this conclusion only after several frustrating hours of debugging my app, thinking either the app was broken or the server wasn't sending the notification. Finally I tested it on a device and found that it actually works fine.
Why does such a limitation exist? If I can't depend on the simulator to handle ALL of the notifications, I'd rather it didn't work at all. Having it work part of the time on some notifications is really confusing.
I'd like my app to run in Portrait mode only on iPhones, but any orientation on iPad.
Years ago, I recall being able to do this by overriding or implementing some callback functions for orientation, which seemed to change with every other iOS release.
I'm hoping there is a simpler way to do this today. I was hoping that the Deployment Info tab in Xcode would let me set different Device Orientation choices for iPhone and iPad, but this doesn't seem to be the case.
I'm sure I could hack around and come up with some solution, but I'd like to learn what the "right" way is to do this in current versions of iOS.
Thanks,
Frank
I've been unable to upload a build from Xcode on my new M1 Mac Mini since I got it in December. I can still upload builds from my Intel Mac which is on the same Wifi network and logged into the same account (and uploading builds of the same product).
The Transporter application works on my Mac Mini, but it is inconvenient to have to run a separate app to do the uploads. I'd like to figure out why it's not working in Xcode.
Only the upload part of the process is failing. The app compiles fine, the signature works, etc.
Thanks,
Frank