Apple security patch releases - ios

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.

Related

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

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.

Using SDK that calls deprecated APIs

Im developing an SDK and its deployment target is set to 9.0. Im using some API's that are deprecated in iOS 10 and above and others that are deprecated at iOS 13 and above.
My question is what will happen to an app that is consuming my SDK and its deployment target is set to iOS 14? will my SDK be affected? will my methods get properly invoked? will it crash the hosting app? is the behaviour under these circumstances is unclear? or maybe all will run perfectly?
Any light on this would be appreciated, thanks.
First things first, deprecation is the first step in the process of ending the life of an API and Apple is warning the developers that these APIs will be removed in one of the future iOS releases. Nobody knows when except Apple. There is certainly a wisdom in that (e.g security concerns, better API design, etc).
Developing an SDK which uses deprecated APIs is generally considered a dead end. I am sure you have your own reasons, however, anyone who uses your SDK will be asking themselves whether there will be any value or will there be a maintenance overhead.
There are certain issues during the development stage that you should be aware of. If the app developer of an app who uses your SDK sets the deployment target to iOS14, most probably Xcode will flag this up as a warning. It depends on other things such as the development language that you are using, whether it is already compiled etc.
Assuming there is a good reason for you to move forward, there are several scenarios on what could happen.
In Production, the very short answer to your question is, the application will crash if the API is removed in the next OS upgrade by Apple (if the app developer doesn't take any action before it is released). However, long answer is a little bit more complicated than this.
The best case scenario is Apple doesn't remove the API for a very long time e.g UIWebView. I think it has been at least 5 years now since Apple deprecated the framework, and technical you can still build an app with the UIWebView. That means you do not have to do anything (in theory).
However, if the API is removed by the new OS update, there are several scenarios:
The device is eligible for an OS upgrade, THEN the app will most likely keep crashing when the API is called by the app/sdk.
If the device is NOT eligible for an OS upgrade (e.g stuck on iOS 10), the app will still live for a while on these devices until the owner buys a new device (whether the app developers takes action or not). That particular app version should also be available through iCloud purchases/downloads. So customers can re-download that version even if they delete it etc.
For an active app developer, the first scenario shouldn't happen. I would expect them to test the app on the next beta of the OS version and take action if there is an issue e.g ask you to provide an update, or replace your SDK with another one.
The API removal process can be a little bit more informed and Apple might force your hand, but be still gentle. Apple may make it explicit and warn developers that any new apps, or app updates which contain the API will not be accepted to App Store. This ties the app developers hands. They need to make a choice. This warning would be months in advanced and you would put this work into your backlog and plan for it.
The scenario in bullet point 2, on the other hand, may not be obvious at first, and Apple is doing a pretty good job of convincing the customers to buy the latest devices. There is a relative 2 year cycle, so you may not find many customer using older phones which are stuck on older OSs. This may be ignored depending on your significance level.
The app developers may or may not be able to keep the min target of the app. If they are so adamant then most likely their app will not be compatible with the latest devices or Apple may refuse their updates (as above). Then that means it is pretty much the end of life of the app, only used by a handful of customers.
There is also scenario where Apple may also remove the applications from App Store and iCloud download which are not maintained for a certain period of time (this has happened).

Is it okay to solicit bug reports?

I've noticed that Instagram and some other apps allow users to report problems but don't actually let people report "bugs". Since I guess the premise of the Apple review process is they catch all bugs and there are no bugs in IOS apps, it makes sense that they do not use the word.
However, is Apple likely to reject the app if you use the word "bugs"?
Coming from a web background where it is okay to launch with a beta, I would like to be honest with users rather than politically correct if that is possible.
The reason I want to let them report bugs is not so much to catch them as we hope to launch bug-free but if anyone has a problem let them report it rather than write a bad review.
Would appreciate any guidance.
Thank you.
Apple review guideline;
2. Functionality
2.2 Apps that exhibit bugs will be rejected
I don't think this means that they have a filter on the word 'bug'. You may find some bug tracking apps available on the app store where they used the word so rejection it not a given, just because of a report bugs section in your app.
But at the time of an Apple review, if they find any bug, they will reject the app so that you may fix it. So you need to be very sharp at it that your app should not have any permanent bug or issue.
For confirmation you may contact App Developer support at https://developer.apple.com/contact/submit.php
You need to avoid using bug, beta or similar words. The phrase Bug report gives users the impression that your app has known issues. I would recommend Send feedback or Contact developer.
The App Store Review Guidelines does not allow you to submit beta apps.
2.9
Apps that are "demo", "trial", or "test" versions will be rejected.
Beta Apps may only be submitted through TestFlight and must follow the
TestFlight guidelines
Similarly, you should not leave known issues present in your app. If you already know the issues, you need to fix them before you submit the app.
For example, when I wrote Please reboot the app if it freezes in the description, it was rejected.

Does Testflight no longer support in-app-notifications of new builds?

So far, my users where notified in the app without me having to do anything but call takeOff and (well here i'm not sure if this was necessary) use a few arbitrary checkpoints. They could choose wether or not they want to update their app now, later or never.
BUT apparently this has stopped working over the past few weeks, I'm receiving more and more feedback that the only way they got to know that there is an update available was through the email that is sent to them by TestFlight.
Did they replace this with "force-upgrade"? In-app update with TestFlight on iOS mentions that using force upgrade enables notifications, yet it forces them to update, which is not what i want.
Or has this something to do with the SDK 2.0 struggling with iOS7?
It's an iOS 7 issue. We're working on work arounds. Here's a help article that explains it more: http://help.testflightapp.com/customer/portal/articles/1318463-in-app-updates-are-not-working-on-ios-7-what-should-i-do-

Getting an iOS app fix verified by a customer prior to general release

When contacted by a customer who is experiencing a problem in your iOS app and making an update to fix it, is there a way to get the user to verify the fix privately before making the update available to everyone?
Background: I was contacted by a user who is seeing a weird rendering problem since installing the latest update. Unfortunately I have not been able to reproduce the problem -- the customer uses an old iPhone model that I don't have access to, and I've had no luck reproducing it with the same iOS version in the simulator. However I made an update that I have good reasons to believe will fix it (I undid the small changes to the rendering code that were in the last update and did an alternative implementation that completely bypasses the issue, if my guess of what the issue is about is correct). But I obviously don't have 100% confidence that it will fix the bug since I can't repro it.
So I've submitted the update to iTunesConnect and have asked the user to wait until Apple has approved it. If it turns out that the change doesn't fix this issue, it would all be such a waste for the customer (who will have waited for nothing), for all my other users (who will see an update for nothing) and for Apple (who will have reviewed an update for nothing).
This is what ad-hoc deployment is for - testing. You can manually deploy a build to the customer (you need to know his devices UDID) or you can use a service like TestFlight (free) which helps to automate and manage the ad-hoc process.

Resources