During my IOS app validation, warning shows "Improper Advertising Identifier [IDFA] Usage. Your app contains the IDFA API but you have not indicated its usage on the Prepare for Upload". I have updated the admob SDK inside with the latest. Do I have to tick using IDFA during the preparation for upload?
Regards
Hammer
Yes, if you are using the Ad Identifier in your own code or in third party libraries such as mopub, then Apple requires you to fill in and check the appropriate forms on the IDFA questionnaire prior to upload.
Specifically, the section advises app developers that the IDFA is “the only way to offer targeted ads” and offers three use cases which they must also check, if in place:
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
Source
Related
Before create a new account for iOS, android to upload web app to Google play and apple store, I want to ask:
Are they allows developer to upload an application that use InAppBrowser of Ionic to view website through that uploaded app ?
We need this to keep our work up to the latest date of updates for all users without need so many versions for both iOS and android.
So, are there any positive, negative or past experiences related to this topic ?
If you take a look at the review guidelines from Apple, https://developer.apple.com/app-store/review/guidelines/ it states that
4.2 Minimum Functionality
Your app should include features, content, and UI that elevate it beyond a repackaged website. If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store.
I would make the case to package your app as an Ionic app, and use either Ionic Deploy, or Code Push to update the content of your app on the fly. Note: This type of deployment cannot update Cordova dependencies, but it does let you keep your html, css and js files up to date.
In general yes, they allow this, but they might get confused (specially Apple) and ask you to be careful about the links that you open inside your app.
For example, Apple has certain guidelines about apps that buy/sell cryptocurrency. If you put a link to a buy/sell cryptocurrency website and open it inside the inAppBrowser, the app reviewer might "think" your app is for buying/selling cryptocurrencty and you might get rejected as a result.
However, if you put links to normal website, for example CNN, they should be ok with it, as there are many apps that already do this.
Reasons Program License Agreement PLA 3.3.12
We found your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.
Specifically, section 3.3.12 of the iOS Developer Program License Agreement states:
"You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier."
Please check your code - including any third-party libraries - to remove any instances of:
class: ASIdentifierManager
selector: advertisingIdentifier
framework: AdSupport.framework
If you are planning to incorporate ads in a future version, please remove the Advertising Identifier from your app until you have included ad functionality.
To help locate the Advertising Identifier, use the “nm” tool. For information on the “nm” tool, open a terminal window and enter, “man nm.”
If you do not have access to the libraries source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool lists the methods that the library calls, and "otool -ov" will list the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides.
I checked who uses IDFA through following command:
grep -r advertisingIdentifier .
I knew that Facebook SDK (3.1.1 version) uses this.
How can I solve this?
The solution for me was that the facebook 3.20 SDK is indeed okay, but I had to remove the FBAudience framework that they include with the FacebookSDK.framework.
Once I removed the FBAudience framework, and ran
otool -L myAppName.app/myAppName
I no longer saw the AdSupport library bundled into my build, printed in the terminal like so:
/System/Library/Frameworks/AdSupport.framework/AdSupport
If you do not find a way to remove the usage of IDFA from the Facebook SDK, then another solution would be to say you're using the IDFA to attribute the installation to a previously served ad (which is actually fairly simple to enable in the Facebook SDK).
This option should be available to you when creating a new build in iTunesConnect if I remember correctly.
This issue has been taken care by Facebook in their latest versions. Update your Facebook sdk to the latest version and this will solve your problem.
I'm using Google analytics in my app to sent the screen names.Do i need to take care of any other advertising id that may be present in Google Analytics SDK That may cause any issue with Appstore Push.
Per the GA docs,
https://developers.google.com/analytics/devguides/collection/ios/v3/#headers
To use the IDFA (Identifier for Advertisers) requires that you link
the following files to your app and then enable IDFA collection:
libAdIdAccess.a AdSupport.framework Note: depending on your build
settings, the linker flag -force_load /path/to/libAdIdAccess.a may be
required.
As long as you don't do that, it will not use the Advertising ID, and it will not impact your app submission.
Has anyone combined these two new features in iOS8 yet? I'm attempting to access HealthKit from a widget. But since the application and extension use two separate App IDs - the widget automatically rejects access to HealthKit. The Notification Center/Today view doesn't display any prompt to allow access. I notice it attempts to because I see an "unbalanced view controller transition" warning in the console, but nothing is displayed.
For a manual fix - the Health app will display the bundle ID with permissions that can be manually changed. However, there's no app icon and the extension is listed as its bundle ID and not listed as its product name. This makes me think this is still something they are working on in the beta.
You could try to access the HealthKit data from your containing app and then share those data with your extension through App Group.
I haven't looked at HealthKit yet, but in another case the App Group feature worked fine for me.
I haven't tried doing this type of combination between those features in my app yet, but while integrating the HealthKit capabilities, I happened to see the following in HealthKit documentations:
Both HealthKit and the Health app are unavailable on iPad. The HealthKit framework cannot be used in an app extension
So I assume a direct way is not available... You can read more here: HealthKit_Framework Documentation
You won't be able to access HealthKit. To quote Apple's App Extension Programming Guide:
Some APIs Are Unavailable to App Extensions
Because of its focused role in the system, an app extension is ineligible to participate in certain activities. An app extension cannot: …
Use any API marked in header files with the NS_EXTENSION_UNAVAILABLE macro, or similar unavailability macro, or any API in an unavailable framework
For example, in iOS 8.0, the HealthKit framework and EventKit UI framework are unavailable to app extensions.
[emphasis added.]
I need to remove adsupport dependency from facebook iOS-SDK because I am not showing any Adds in my app and Apple is rejecting apps if there is advertising identifier but not displaying ads in the app. Is there any possible solution? Kindly check this link http://techcrunch.com/2014/02/03/apples-latest-crackdown-apps-pulling-the-advertising-identifier-but-not-showing-ads-are-being-rejected-from-app-store/
Try submitting your app again. It should go through now.
[EDIT]: Copied from my own answer:
Everything has come to its usual state now. Simply upload your binary as you've been doing this while, and broadly classify IDFA in two categories:
publisher: You use third-party ad-networks library to display ad. Choose the 1st option in IDFA -> "Serve advertisements within the app". You're a publisher since you show ads, but do not perform advertising for your own app.
Advertiser: You use third-party libraries to track conversions for your app, as well as track 'goals' in your app. You directly do not show ads in your app. Choose the 2nd & 3rd option in IDFA -> "Attribute this app installation to a previously served ad". AND "Attribute an action taken within this app to a previously served advertisement".
Mixed: You track conversions for your app, as well as display ads in your app. Choose all three options.