Does iOS state preservation/restoration survive app uninstall and reinstall? - ios

If this differs between versions of iOS or different types of state preservation, please say so.
In this case, I'm using application:shouldSaveApplicationState: and application:shouldRestoreApplicationState: – I'm not sure if state preservation/restoration is the correct term. (We're changing to application:shouldSaveSecureApplicationState: etc, but haven't released it yet.)
I'm asking because I'm looking into an error report that suggests that maybe a user got a bad state restored even after reinstalling the app, but I can't reproduce it, and I wasn't able to find docs that clearly stated what to expect if reinstalling.

It wouldn't be be logical for it to persist after app uninstall, so no, it does not.
Please note application:shouldSaveApplicationState: and application:shouldRestoreApplicationState: are deprecated since iOS 13.2.
EDIT: By uninstall I mean the user actively removed the app. I'm not talking about an app being off loaded by the iOS due to storage, at this case it is saved. The whole topic is extremely vague in the Apple documentation.

The answer is no, it does not.

Related

Apple security patch releases

Apple recently released iOS 15.3 which patches serious security issues. I'm curious to know if this will require the app to be updated or an update would help in any way? I couldn't find info on developer.apple.com so asking here.
I'm curious to know if this will require the app to be updated or an update would help in any way?
Generally, no, you shouldn't have to update your app when Apple releases a minor update. Historically, Apple has gone to great lengths to avoid breaking application code without first at least warning developers well in advance.
To be certain, though, you should routinely test your app and confirm that it runs correctly under the latest update.

How to let iOS/macOS update our app while its NetworkExtension is running?

We have an app that registers and runs a NetworkExtension (specifically NEPacketTunnelProvider) on both iOS and macOS. This works fine (although not in the iOS simulator, of course, known limitation). However, when the network extension is running, the App Store on macOS/iOS, and TestFlight on iOS, fail to update the app. It looks like they're waiting for the NetworkExtension to terminate, but not actually asking the VPN to disconnect.
We don't want our users to have to think about killing our VPN (which should stay connected whenever possible), but we don't want them to have to think about updates either - they should happen automatically.
Are we missing something? Is there an event we should be listening on to detect that the store is trying to install an app update? Conditions when we should arrange for the VPN to terminate, safe in the knowledge that it will be restarted again after being updated?
Apple had bugs regarding this issue. It was supposed to be ok since iOS 11 (and macOS 10.13 or 10.14), but then users reported that the problem still exists. Several bugs regarding this are still probably open at Apple's bugs reports, but we can't check their status.
You can ask again at their forum, and open another bug regarding this issue.
Probably there's nothing else you can do.
Those are only some of the reports related to this issue:
https://forums.developer.apple.com/message/174708#174708
https://forums.developer.apple.com/thread/92603
https://forums.developer.apple.com/thread/126471
https://forums.developer.apple.com/message/149563#149563
https://forums.developer.apple.com/message/183927#183927
Edit: Someone just posted a question regarding this at Apple's forum. It might be you who posted to question, but maybe it's someone else, so there's another reference:
https://forums.developer.apple.com/thread/128894

How does Yubo previously known as Yello remember users after reinstall?

Okay, I have asked Reddit 3x and Apple once and no one could answer this so I am coming to you guys. Please be the ones to answer this validly. Okay, details. Yubo remembers my phone after reinstall and I do not know how. I have tried the following:
Changed my IP Address using a VPN
Change my IDFA through reset identifier which I now know is pointless as since I had “limit ad tracking” on the output would have been an output value of numerous 0’s (though this some how got me unbanned from the “Instagram” app, idk how tho)
Changed my IDFV by...well reinstalling the app (Yubo is there only app so don’t ask about other apps from the vendor)
Change my iPhones name multiple times
Prevented the app from being backed up on Icloud then reinstalling
I also logged out of the Icloud prior to using the app for the first time after reinstall
And that’s about it. I am aware the app may recognize: my phone, ios version and hardware. However, none of that is exclusive to my phone. I have read people having the exact same model and phone so i doubt Yubo is remembering me through that. I have never met an app so smart before, but I know some of you have probably been screaming this entire time one thing I have missed so please tell me what i missed and a way to change it without resetting my phone.
My device: Iphone6s and IOS 11

iOS MDM - App com.xxx.xxxx is already scheduled for management

I'm setting up an MDM installation to distribute apps to supervised devices and seem to regularly get the managed application into a weird state where it's "scheduled for management" but doesn't actually install to the device. It's unclear to me how it gets into that state or how to get it out of that state.
I tried to use the RemoveApplication command, but since it never actually installed, this failed to remove it. I was able to get it out of this state by turning the device off and letting it forget it's volatile memory and then turning it back on, but this is an unacceptable solution for the use case I'm trying to achieve. It also doesn't seem to always fix the issue.
I attempted to use a support ticket with Apple to resolve this, but they basically told me that the problem we're experiencing should be submitted as a bug report, so we submitted that to them.
Basically, I'm just wondering if anyone else has experienced this issue and if you have, do you know of any workarounds to get it out of this state?
Thanks!

What happens if an api your app uses is deprecated after your app is released?

If you release an app that uses an api that is later deprecated (after the release of your app), then what happens ?
What if you never update your app after it is released on the store ? Will it work with all future versions of iOS ?
Will the app still work when the api goes away in later OS versions? Or will the App Store just prevent your app from being downloaded to future OS versions ?
You asked:
If you release an app that uses an api that is later deprecated (after the release of your app), then what happens?
According to Apple, "A method identified as deprecated has been superseded and may become unsupported in the future."
So, needless to say, if your app is using an API that is deprecated at some future date, it generally will continue to work until such point Apple chooses to no longer support that API. In practice, your app will continue to function well after the API is deprecated, as Apple places a strong emphasis on backward compatibility.
If you use methods that are already flagged as deprecated at the time you release your app (or at least without doing the appropriate runtime checks for the availability of the successor method), you run a greater risk of incompatibility with forthcoming iOS versions. But if you stick with the API that is not deprecated at the time you release your app, you're unlikely to run into problems with API changes within any reasonable time span.
What if you never update your app after it is released on the store? Will it work with all future versions of iOS?
If well designed (e.g. you don't rely upon methods that were deprecated at the time you developed the app), you'll probably be safe for several iOS versions at the very least, but you have no guarantee of such. The burden rests upon the developer to ensure that the app is compatible with new versions of iOS as they're rolled out.
Frankly, apps generally date themselves well before the evolution of the API breaks it, so the level of user interest will diminish well before the API breaks it.
Will the app still work when the api goes away in later OS versions? Or will the App Store just prevent your app from being downloaded to future OS versions?
If the API is eventually retired, then obviously your app will no longer function, except in the unlikely scenario that you anticipated this and gracefully handle that situation. I don't believe that the app is automatically removed, probably only in response to user complaints.
The only automatic removal that I'm aware of is that the developer allows their paid developer's license to lapse. In that scenario, the app is removed from the store immediately.
As an aside, you have focused solely on API differences. Another source of problems are those apps that rely upon some undocumented iOS idiosyncrasy for the successful operation of the app. If you stick to standard, documented API calls, you should be fine. But if you have some feature that you only got to work employing some kludgy work-around discovered experimentally, but not found in the official documentation, then that's a warning sign that your app might not be very "future-proof" and may well break upon future iOS releases.
immediately nothing . the deprecated api is not going to be removed from the OS .. a few years later the app might just crash on then modern OS's if you still use that function BUT AFAIK there has not been that case in IOS's short life.
A different story is when you update the Base SDK of an app and recompile it. it might be you are forced to replace that deprecated call.
It's very difficult to say because some methods/properties which was deprecated still works. For example tableViewCell.textColor was depreciated in iOS 3 or 4 but it works.
Apple tries to maintain backward compatibility with older iOS's and they allow old apps works.
While I've never experienced this issue with my own apps, I have seen apps in the store that have not been updated for 2+ years. A lot of these apps just crash on launch as they try to access APIs that no longer work and have piss-poor error handling built in.
I'm not sure if Apple goes and proactively removes these apps, though they obviously have that power since they own the App Store. I've also read they can do go as far as removing every installed copy on every iOS device of a specific app.
If an app gets enough negative reviews or comments that are reported as highly negative, it may get removed.

Resources