Web view deprecation issue iOS - ios

We were using web view previously in our app so that we received the web view depreciation mail from apple.
So now we completely removed web view from our code and also we don't use WebKit at the place of the web view.
But still, we getting the depreciation mail from apple whenever I upload the build to the test flight.
Note: We are using Firebase SDK, Crashlytics SDK and fabric SDK.
All pod files are updated.
Please help me with this.

If you use any third parties SDK which is used UIWebView internally, Then no need to worry at all because currently, it is not mandatory. Once apple provide the official timelines regarding the deprecation of UIWebView then all SDK required migration.
In June 2018, Apple announced their intent to deprecate a class called
UIWebView.
Apple did not provide a concrete timeline for implementing this change
in policy, but with this recent notification, we wanted to make sure
you are prepared for when it does take effect.
Thank you.

Related

Apple Store - rejecting new apps using UIWebView; Will this impact my existing app and future releases?

I have an app up on the apple store written with Ionic v1, Cordova, and AngularJS. It's been up there for a few years now. We are planning a few more releases in the upcoming months. I got this email from the Ionic Team:
Hi Aubrey,
In just over one week’s time, Apple will begin rejecting new apps using UIWebView. We wanted to reach out with details on how to update your Ionic apps.
If you receive an email from Apple after uploading an app binary to the App Store, you’ll need to update the app. The email reads something like this:
We identified one or more issues with a recent delivery for your app, [App Name & version number]. Your delivery was successful, but you may wish to correct the following issues in your next delivery:
ITMS-90809: Deprecated API Usage – Apple will stop accepting submissions of apps that use UIWebView APIs. See https://developer.apple.com/documentation/uikit/uiwebview for more information.
After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to App Store Connect.
You can find complete details including upgrade instructions on the Ionic blog, but here’s the summary:
Using Cordova? Update to cordova-ios 5.1.0 and above, install the WKWebView plugin, and update each Cordova plugin to the latest version.
Using Capacitor? Update to the latest version then sync the project.
Submit a new version of your app before the deadline to ensure that it has been updated correctly.
If you're an Ionic Enterprise customer, your Customer Success Manager should already be in touch. If you're not a customer and would like to learn more about Enterprise Support options, please reach out here for extra assistance. Our Enterprise Support team is available and able to help. We've already helped a number of our customers navigate this change quickly & easily.
Cheers,
The Ionic Team
The email says that they will reject new apps of they are using UIWebView.
Does this also mean that my future releases will be impacted? Will my next release of an existing app be rejected for using UIWebView?
This link provides the answer to both of your questions.
The bottom line: It’s time to update your apps! Apple will only accept submissions of Ionic-based iOS apps that contain references to UIWebView until April 2020 (new apps) and December 2020 (existing apps). To meet the new requirement, simply update to the latest version of Capacitor. If you’re using Cordova, see below.
- From link provided!
I have installed ordova-ios#5.1.1 and using plugins which may have some UIWebView references such as google-plus, facebook4 and social sharing.
Also I've added the right configuration to config.xml but still failed to successfully upload to App Store. They keep rejecting my first app and now my build number is 1.0.21 !!! 21 Tries I've made but still failing.

Third Party Sign in for IOS11 - GIDSignInButton

I am testing for IOS 11 updates and notice that my Firebase Auth using Google Sign in does not work
I get an error
A problem repeatedly occurred on https://accounts.google.com/signin/oauth? client_id nosignup pproval_state=???? passive=????
I can see many press reports about Apple removing part of the social media integration Apple to stop third party login on apps through social media in iOS 11
But I cannot find anything aimed at developers on what we should do about this.
Google sign in web page does not mention anything that I can see about IOS11 Google Sign-In for iOS
Nor does Firebase
Could anyone provide clarification on whether these libraries will still be relevant going forward in IOS11, or provide links where these issues have been discussed.
------ adding link to Firebase sample app -----------
Firebase sample app also fails for the Google login, I have not tested all others
https://github.com/firebase/quickstart-ios/authentication/AuthenticationExampleSwift
It is true that Apple has removed the special handling of certain 3rd party social networking sites (FB, Flickr, Twitter), but Google was never among that list. So, your error should not be related to that.
The library you are using relies on a well adopted mechanism for providing in-app out-of-context OAuth signin. Basically, the app presents a SFSafariViewController with the OAuth page, then once authorization has completed it opens a special URL which gets forwarded back to the application which then dismisses the SFSafariViewController. Google and FB I know for sure do it this way in their SDKs.
In iOS 11, Apple is providing a new mechanism to do this workflow. It is called SFAuthenticationSession. They aren't deprecating the currently supported method, and you will likely see the libraries you use migrate to this new mechanism for iOS 11 devices.
The answer to your question is that these libraries are still relevant and you should continue to investigate your error (make sure you're not getting the error on iOS 10, obviously)
Update
In response to further questioning, I fired up a sample project from the link provided. I ran into the same problem on the simulator, but when I ran it on my old iPhone 6 with iOS 11 beta 3 it worked fine. So, at the movement, this seems like a simulator bug. One theory may be simulator's reliance on the host operating system for certain libraries, so it's possible that if you were running High Sierra you might not experience this problem.
I tried fiddling with all sorts of switches in settings to get the page to load correctly to no avail. It looks like the course of action is:
File a feedback
Test on the device until the simulator is fixed (this is beta software after all)
Update #2
The simulator issue seems to be fixed in Xcode 9 beta 4. 🎉

iOS App Rejection due to private API call viewControllerForView:, Facebook API

My app was rejected because
The use of non-public APIs is not permitted on the App Store because
it can lead to a poor user experience should these APIs change.
in the method
viewControllerForView:
I asked where I used viewControllerForView: and they responded
“viewControllerForView:” was found in the methods:
-[FBSDKLikeButton _handleTap:] and -[FBSDKLikeButton _like:].
My FBSDKLoginKit, FBSDKCoreKit and FBSDKCoreKit pods are all at 4.15.1 (the latest version). How should I go about fixing this?
You don´t need to make any changes in your code, read this post from Facebook developers of how to solve it.
After integrating our SDK into your iOS app, you will need to submit
your app to Apple for review. As part of this review process, you will
be asked if your app uses the Advertising Identifier (IDFA). Please
check "Yes". You will then be asked how your app makes use of it. The
question will take this form: This app uses the Advertising Identifier
to (select all that apply)?
- Serve advertisements within the app
- Attribute this app installation to a previously served advertisement
- Attribute an action taken within this app to a previously served advertisement
If you will be using the Audience Network framework, you must select
the first option. If you are using our core framework to track
install attribution and app events, please select the second and third
options. If you are using both, select all three.
You will also be asked to check a box to confirm that your app honors
a user's Limit Ad Tracking setting in iOS. The Facebook SDK honors the
iOS Limited Ad Tracking Setting. When a person enables Limited Ad
Tracking, Facebook only uses data obtained through the use of the
Advertising Identifier for “Limited Advertising Purposes” as defined
by the iOS Developer Program License Agreement. Please make sure check
this box when prompted.
Marking these questions in this way will help ensure a smooth review
process

Non-public API usage ItunesConnect warning

After updating PSPDFKit library in my application. But the interface of the library didn't change much from the previous version. Then I had uploaded it for internal testing(I use Xcode 7.0.1.) and received next warning:
I can see the build on iTunes page but it already almost 24 hours in Processing state.
The questions are:
1)If anyone received the same recently?
2)If there connection between the warning and Processing state taking so long?
3)Is this warning really can lead to rejecting the application?
And I saw similar questions on Stack-overflow but they seem to be outdated.
if an app use non public api then app will be rejected from apple.
This written on apple page
https://developer.apple.com/app-store/review/guidelines/
Apps that use non-public APIs will be rejected
I'm one of the PSPDFKit SDK authors.
None of the mentioned method names are private API and we haven't seen such a report so far. Please contact us at support.pspdfkit.com directly so we can work out what's going on here. Since we recently released PSPDFKit v5, many companies updated their apps so we can say with guarantee that our product does not get flagged on iTunes for such issues.
I also recommend updating Xcode, as we only list Xcode 7.1 and higher as compatible: https://pspdfkit.com/changelog/ios.

Does this app use the Advertising Identifier (IDFA)? - AdMob 6.8.0

I'm currently uploading my App to the App Store and Apple is asking me if this app users IDFA. I'm using the latest Admob SDK or 6.8.0 and I don't know if it uses IDFA or not, and if it does which check boxes should I hit X.X
Image http://i.gyazo.com/a7d36f95ac0cc066e5654517d4ec2f3f.png
I'm having the same issue here and I was a bit afraid of checking the last box, since I have no idea what the 3rd party SDK will do with the data collected and if they will respect the Limit Ad Settings.
But I found a post by a Google Admob programmer, Eric Leichtenschlag, on their forums:
The Google Mobile Ads SDK and the Google Conversion Tracking SDK utilize Apple's advertising identifier introduced in iOS 6 (IDFA). While each developer is responsible for how they access device data, the SDKs use IDFA under the guidelines laid out in the iOS developer program license agreement, including Limit Ad Tracking.
Including Limit Ad Tracking. This is what the last box is all about. So you must check the that box if you use AdMob. If you use other SDK I strongly recommend checking if they respect the guidelines as well.
Since I run only ads (Google AdMob), I checked the first (Serve ads...) and last box (I, ___, confirm...). App was approved and released, no issues.
Source: https://groups.google.com/forum/#!topic/google-admob-ads-sdk/BsGRSZ-gLmk
If you are lazy to check on each third party SDK if they use or not the IDFA you can use this command:
fgrep -R advertisingIdentifier . (don't forget the dot at the end of the command)
Go to your project/workspace folder and run the command to find which files are using the advertising identifier.
Then you just have to look in the guidelines of those SDKs to see what you need to do about the IDFA.
I recently submitted an app to Apple's App Store. My app was built using iOS 12, Xcode 10, and Swift 4.2. My app uses Google AdMob for the sole purpose of showing Interstitial Ads. When prompted these question, this is what I did:
1) Does this app use the Advertising Identifier (IDFA)? ANSWER: YES
a) Serve advertisements within the app - CHECKED
b) Attribute this app ... - NOT CHECKED
c) Attribute an action ... - NOT CHECKED
I, (my name), confirm that this app ... - CHECKED
My app was accepted and "Ready for Sale" in less than 24 hrs.
You can track all calls to [ASIdentifierManager advertisingIdentifier] with symbolic breakpoint in Xcode:
Yes, it does. From the AdMob page:
The Mobile Ads SDK for iOS utilizes Apple's advertising identifier (IDFA). The SDK uses IDFA under the guidelines laid out in the iOS developer program license agreement. You must ensure you are in compliance with the iOS developer program license agreement policies governing the use of this identifier.
If you have Google analytics or Facebook api in you app, you need to check all of them to make sure it works!
Edit: This is an old answer - see comments or other answers for an exact answer.
In app store connect now if we are using ads in our app then we will answer as yes to Does this app use the Advertising Identifier (IDFA)?
further 3 questions will be asked as
if your using just admob then check the first one and leave other two unchecked. Other two options (2nd , 3rd ) will be checked if your using app flyer to show ads.
all options are explained with detail here
BTW, Yandex Metrica also uses IDFA.
./Pods/YandexMobileMetrica/libYandexMobileMetrica.a
They say on their GitHub page that
"Starting from version 1.6.0 Yandex AppMetrica became also a tracking instrument and uses Apple idfa to attribute installs. Because of that during submitting your application to the AppStore you will be prompted with three checkboxes to state your intentions for idfa usage. As Yandex AppMetrica uses idfa for attributing app installations you need to select Attribute this app installation to a previously served advertisement."
So, I will try to select this checkbox and send my app without actually no any ads in it.
It seems many indie developers like me are desperately looking for an answer to these questions for years. Strangely, even after 5 years this question was asked, it seems the answer to this question is still not clear.
As far as I can see, there is not any official statement in Google AdMob documentation or website about how a developer can safely answer these questions. It seems developers are left on their own in the mystery about answering some legally binding questions about the SDK.
In their support forums they can advice questioners to reach out to Apple Support:
Hi there,
I believe it would be best for you to reach out to Apple Support for
your concern as it tackles with Apple Submission Guidelines rather
than our SDK.
Regards, Joshua Lagonera Mobile Ads SDK Team
Or they can say that it is out of their scope of support:
Hello Robert,
On this forum, we deal with Mobile Ads SDK related technical concerns
only. We would not be able to address you question as this is out of
scope for our team.
Regards, Deepika Uragayala Mobile Ads SDK Team
The only answer I could find from a "Google person" is about the 4th question. It is not in the AdMob forum but in the "Tag Manager" forum but still related. It is like so:
Hi Jorn,
Apple asks you about your use of IDFA when submitting your application
(https://developer.apple.com/Library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html).
For an app that doesn't display advertising, but includes the
AdSupport framework for conversion attribution, you would select the
appropriate checkbox(es). In respect to the Limit Ad Tracking
stipulation, all of GTM's tags that utilize IDFA respect the limit ad
tracking stipulations of the SDK.
Thanks,
Eric Burley Google Tag Manager.
Here is an Internet Archive link in case they remove this page.
Lastly, let me mention about AdMob's only statement I've seen about this issue (here is the Internet Archive link):
The Mobile Ads SDK for iOS utilizes Apple's advertising identifier
(IDFA). The SDK uses IDFA under the guidelines laid out in the iOS
developer program license agreement. You must ensure you are in
compliance with the iOS developer program license agreement policies
governing the use of this identifier.
In conclusion, it seems most developers using AdMob simply checks 1st and 4th checkmarks and submit their apps without being completely sure about what Google exactly does in its SDK and without any official information about it. I wish good luck to us all.

Resources