iPhone App AppStore submission with SessionM SDK - ios

I have added SessionM SDK with mPoints to my iOS app. When I submitted it to review I checked YES for Advertising Identifier (IDFA) question.
But the App was rejected with reason "We found that your app uses the iOS Advertising Identifier but does not include ad functionality."
I have checked the code with grep -r advertisingIdentifier . and got match in SessionM-SDK/libSessionM.1.14.6.a (SessionM SDK)
And now I have a question - should I select YES for Advertising Identifier (IDFA) question or not?

You does not need to check Yes for Advertising Identifier(IDFA) question.
it is only require when you have functionality in application to show ads via using Google ad, Chart boost library etc.

Finally I got approve for my App.
Correct answer is - you should check YES for Advertising Identifier (IDFA) question, because SessiomM SDK really uses it.
But some Apple's reviewers can't find advertisement even if it on main screen under the nose.
In this case simply provide more info about advertisement, and how user can find it.

Related

Does this app use the Advertising Identifier (IDFA)? when using Firebase

When i am about to review my iOS app I get this question asked. And the simple answer is "NO".
I have searched these forums but only found what i think is people using enhanced analytics framework as adSupport and such.
I use both Crashlytics and Analytics framework from Firebase. And in there i know there is code for using IDFA. Though from my understanding it is only ever used if i also use the AdSupport.framework. And i do not use it or ads in any other way.
I do use push notifications using firebase push api getting pushTokens from phone ids. But i do not think that is anything using IDFA...
What is the correct answer to this question. And if Yes. there are 3 more options. Here is the full message if "YES" is checked
Does this app use the Advertising Identifier (IDFA)?
The Advertising Identifier (IDFA) is a unique ID for each iOS device and is the only way to offer targeted ads. Users can choose to limit ad targeting on their iOS device.
If your app is using the Advertising Identifier, check your code—including any third-party code—before you submit it to make sure that your app uses the Advertising Identifier only for the purposes listed below and respects the Limit Ad Tracking setting. If you include third-party code in your app, you are responsible for the behavior of such code, so be sure to check with your third-party provider to confirm compliance with the usage limitations of the Advertising Identifier and the Limit Ad Tracking setting.
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
Ensure that you select the correct answer for Advertising Identifier (IDFA) usage. If your app does contain the IDFA and you select No, the binary will be permanently rejected and you will have to submit a different binary.
Thanks in adv.
If you don't include the AdSupport.framework in your project you don't need to worry about IDFA. The FirebaseAnalytics SDK willuse the advertisingIdentifier if the AdSupport.framework is linked into your app.
You can simply select No.
or
You can select Yes and
Serve advertisements within the app - NO
Attribute this app installation to a previously served advertisement - NO
Attribute an action taken within this app to a previously served advertisement - YES.

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

deploying cordova admob app Advertising Identifier checks

Hi what are the correct answers to apples questions according Advertising Identifier checks:
See below, I am using cordova and this plugin. Is it the first and fourth box assuming I am just distributing an app with the cordova plugin?
I am 100% sure of this answer. Even had an app rejected because of this. Admod iOS SDK uses Apple's advertising identifier (IDFA), thus the settings you are showing are 100% correct.

Failed Validation reason : Improper Advsertising Idenfier IDFA Usage. Your app contains the Advertising Identifier IDFA

This is the message, when I tried to submit my new game :
Failed Validation reason : Improper Advsertising Idenfier IDFA Usage.
Your app contains the Advertising Identifier IDFA API but your app is
not respecting the Limit Ad Tracking in iOs.
I never have this issue before.
I check in terminal :
fr:DontTouch anthonybarouch$ grep -r advertisingIdentifier .
Binary file ./Trifecta/libInMobi-4.1.0.a matches
It's the only file where the advertisingIdentifier is used.
Here a screenshot of all the libraries I'm using in my project :
I had the same issue in this weekend and I had to remove all the add support frameworks, including iAd, AdSupport and libGoogleAdMob,and all the code in order to submit a binary and reject it.
Apple doesn't give you the chance to delete a version until you upload a binary, also you can't upload a binary if you didn't checked the "Advertising identifier" checkbox and you use ads in your app, and more retarded you can't change that option until you reject the binary uploaded for the current version.
So what I did, I created a new copy of my project, removed all references to ads, submit the binary without ads and rejected the binary, after that, I set the option on iTunes related to "Advertising identifier" to YES and uploaded a new binary form my original project with ads enabled and this worked.
The problem isn't actually to do with using 'advertisingIdentifier', but weak referencing it which Apple no longer allows.
If you remove AdSupport.framework, any SDK's which then cause linker errors are NOT the problem. So if you have other Ad providers not causing linker errors, this is because they are weak referencing AdSupport which is not allowed. Remove any others advertising SDK's and try again. In my case Millennial was the problem.
As per apple guidelines, if any application is using the Advertising identifier and not have included ad functionality then apple will reject the application.
So you got from terminal that libInMobi-4.1.0.a lib using the Advertising identifier.
Check for libInMobi-4.1.0.a updates. Make sure you have to use libraries which are not using such advertising identifiers.
You can use a symbolic breakpoint to identify what in your code or dependent SDK is calling advertisingIdentifier when it is not supposed to:
On a device, go to Settings > Privacy > Advertising and turn on Limit Ad Tracking.
In Xcode, add a symbolic breakpoint for -[ASIdentifierManager advertisingIdentifier]
Install and run the build to your device. That breakpoint should not fire, and if does then you've found the source of the problem.
I contacted Millennial regarding the same issue, I and was encouraged by their response...
It appears that Apple deployed some new auto-check validations over the weekend and our SDK is being flagged as non-compliant. We do not believe we’re out of compliance with IDFA policies, but it does appear we’re failing this auto-check. GMS Tech and product are both working on this as priority #1 today and we have engaged Apple.
We are (and always have been) compliant and we’re working with Apple
to figure out why this validation message is being tripped.
Later, I was told that the issue had been resolved on Apple's end, and that no Millennial SDK update would be required.
So, it looks like the current Millennial Media SDK (v5.2.0, and possibly earlier ones) are no longer a problem.

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