Cannot remove App Privacy even after removing AdMob - ios

I wanted to remove AdMob from my iOS app, so I remove all traces of AdMob, and make sure that info.plist does not have NSUserTrackingUsageDescription, no external framework used, and no traces of NSUserTrackingUsageDescription in my codes (global search in Xcode not found).
However, previous version has setup App Privacy in AppStore Connect.
Uploading a new build I can remove all entries in App Privacy except for one (?): Data Types - 1 data type collected from this app: Product Interaction
And I cannot remove this one: when selecting not collecting info, I got this error message:
Your app contains NSUserTrackingUsageDescription, indicating that you will request permission to track users. You must indicate which data types are tracking users. If this is incorrect, update your app binary and upload a new build to App Store Connect.
What shall I do? And what is this Product Interaction tracking? (The rest can all be reset to not tracking except this one.)

Workaround:
For anyone still experiencing this issue, I just wanted to share that I was able to overcome this by submitting an appeal to the App Review Board after my binary was rejected.
I received a response to my appeal two days later. They did not acknowledge the problem—rather, they simply stated that they would proceed with the review and that my binary would be approved shortly, while reminding me to update my App Privacy information prior to my next submission. A day later, my app update was approved and Ready for Sale.
I also submitted a bug report, in hopes that this will be properly fixed for others someday soon.
Feedback Assistant (bug reporting)
Background:
The issue appears to be that the App Privacy page in App Store Connect is looking at the binary of your current release (the one live on the app store) to determine if you use NSUserTrackingUsageDescription. It's a Catch 22 where you can't remove "Advertising Data" from your App Privacy page until your new binary is accepted, but they won't accept a new binary until you remove "Advertising Data" from your App Privacy page.
There are two popular threads on the Apple Developer Forums with many users experiencing this same problem:
Can not update your app privacy information about tracking user
https://developer.apple.com/forums/thread/678920
Cannot remove App Privacy after removing AdMob and tracking
https://developer.apple.com/forums/thread/679585?login=true

Related

Apple rejection for using HealthKit [duplicate]

I am using HealthKit in my app to read users daily steps data and for that I enable HealthKit in my app.
I uploaded app without NSHealthShareUsageDescription and NSHealthUpdateUsageDescription key in info.plist.
Apple rejected the app as follow and says this both key must be in info.plist.
NSHealthUpdateUsageDescription - Read your daily steps data for calorie count data
NSHealthShareUsageDescription - Share workout data with apps.
I added that key and upload again.
now app rejected with this reason.
Design - 4.2.1 Your app uses the HealthKit or CareKit APIs but does not indicate integration with the Health app in your Application.
any idea how can I approve it?
From the App Store Review Guidelines
4.2.1 Apps should use APIs and frameworks for their intended purposes and indicate that integration in their app description. For example, the HomeKit framework should provide home automation services; and HealthKit should be used for health and fitness purposes and integrate with the Health app.
It sounds to me that Apple have looked at your app and for some reason, it looks to them as if you're not actually using the step data for anything useful to the user. Does your app actually use the step data and present it back to the user in any meaningful way?
The only other thing I think they might mean is that they don't like the wording you chose for NSHealthShareUsageDescription/NSHealthUpdateUsageDescription (you're supposed to clearly state the purpose why your app needs access to health data).
Edit: Another thought, perhaps your app description doesn't mention that it's an app that uses healthkit/step data.
I recently had the same issue and found the solution.
I was able to pass the review with clearly stating “this app integrates with the Health app” in the app description of App Store Connect.
That was a weird case cuz the rejection caused the meta data and seems like I didn't have to revise my app any more although the review status was "Binary Rejected".
just update your app description on the AppStore to indicate your app integrates with apple health app (HealthKit) and why it used (purpose). for example add to your app description something like : we integrate with the health app (HealthKit) to read and track your steps data and show them in a beautiful way.
Got rejected thrice because of this before being accepted. Here is what I was doing wrong:
I only had HealthKit Capability for my Debug Profile. Make sure that you have HealthKit Capability enabled for your Release Profile as well or just add it for "All"
I usually have different Xcode signing profiles for development, testing and production. Make sure that you choose the correct signing profile when submitting your app for review. Verify the capabilities added to each profile from Apple Developer > Certificates, Identifiers, Profiles > Profiles > Capabilities
Moreover, I added app screenshots showing how health data was used to the app store screenshot section - since they mention in the review that you need to have indicators in the User Interface as well to indicate HealthKit integration. I also updated the app description to say that my app integrates with the Apple Health App.

Is it possible that an iOS app with improper IDFA information passes App Store review?

I released an iOS app to App Store with Facebook SDK integrated.
During the submission, Itunes Connect asked me about IDFA:
Does this app use the Advertising Identifier (IDFA)?
and I checked "No".
It passed App Store review successfully. There was no problem.
And after the submission, I found several links saying that, in my case, "Yes" should have been chosen for the question:
Does the Facebook SDK use IDFA for Mobile App Installs?
IOS application that uses Facebook SDK, which options should be selected on iTunes Connect IDFA?
https://www.facebook.com/help/audiencenetwork/414857395387956
My app don't serve advertisements but logs app installs and some events.
For instance, it contains codes like:
FBSDKAppEvents.activateApp()
FBSDKAppEvents.logEvent("Some events")
Now it seems quite obvious that my app uses IDFA and it was a mistake that I chose "No".
But the only thing confusing me is that my app passed review without any rejection.
Is it possible that an iOS app with improper IDFA information passes App Store review?
In my opinion, if Apple verifies IDFA information by human, I think it might be possible and my first submission was just lucky.
But if it is verified by the machine, then my answer ("No") was right and I am going to choose "No" again.
Is there anybody with similar experiences?
Finally, I tried and got the answer.
I submitted the new version of my app with checking "Yes" to the IDFA question and it passed the review.
There was no changes related with FBSDK. That is, from the point of view of IDFA, those binaries can be considered to be same.
So the conclusion is:
An iOS app with improper IDFA information can pass the App Store review (possibly Apple's mistake?)
The fact that your app has passed the review without rejection doesn't guarantee you provided the right IDFA information. Don't believe history and always choose the right answer for that time

iOS app reject because of healthkit

I am using HealthKit in my app to read users daily steps data and for that I enable HealthKit in my app.
I uploaded app without NSHealthShareUsageDescription and NSHealthUpdateUsageDescription key in info.plist.
Apple rejected the app as follow and says this both key must be in info.plist.
NSHealthUpdateUsageDescription - Read your daily steps data for calorie count data
NSHealthShareUsageDescription - Share workout data with apps.
I added that key and upload again.
now app rejected with this reason.
Design - 4.2.1 Your app uses the HealthKit or CareKit APIs but does not indicate integration with the Health app in your Application.
any idea how can I approve it?
From the App Store Review Guidelines
4.2.1 Apps should use APIs and frameworks for their intended purposes and indicate that integration in their app description. For example, the HomeKit framework should provide home automation services; and HealthKit should be used for health and fitness purposes and integrate with the Health app.
It sounds to me that Apple have looked at your app and for some reason, it looks to them as if you're not actually using the step data for anything useful to the user. Does your app actually use the step data and present it back to the user in any meaningful way?
The only other thing I think they might mean is that they don't like the wording you chose for NSHealthShareUsageDescription/NSHealthUpdateUsageDescription (you're supposed to clearly state the purpose why your app needs access to health data).
Edit: Another thought, perhaps your app description doesn't mention that it's an app that uses healthkit/step data.
I recently had the same issue and found the solution.
I was able to pass the review with clearly stating “this app integrates with the Health app” in the app description of App Store Connect.
That was a weird case cuz the rejection caused the meta data and seems like I didn't have to revise my app any more although the review status was "Binary Rejected".
just update your app description on the AppStore to indicate your app integrates with apple health app (HealthKit) and why it used (purpose). for example add to your app description something like : we integrate with the health app (HealthKit) to read and track your steps data and show them in a beautiful way.
Got rejected thrice because of this before being accepted. Here is what I was doing wrong:
I only had HealthKit Capability for my Debug Profile. Make sure that you have HealthKit Capability enabled for your Release Profile as well or just add it for "All"
I usually have different Xcode signing profiles for development, testing and production. Make sure that you choose the correct signing profile when submitting your app for review. Verify the capabilities added to each profile from Apple Developer > Certificates, Identifiers, Profiles > Profiles > Capabilities
Moreover, I added app screenshots showing how health data was used to the app store screenshot section - since they mention in the review that you need to have indicators in the User Interface as well to indicate HealthKit integration. I also updated the app description to say that my app integrates with the Apple Health App.

iOS application repeatedly rejected from Apple store

I'm facing some problems with uploading an iOS application to the Apple store. For the very first time, I uploaded and submitted my iOS application and it was rejected by the Apple team. They mentioned that they want authentication for my application, so I put authentication and uploaded my binary again. It was rejected a second time. This time they mentioned that I need to put authentication in my application. That's when I realized that my application is not getting updated.
The first time I made changes, I used the Organizer in Xcode to upload my binary (navigate to Organizer -> Archives. Then validate first and distribute).
The second time I made changes, I used the Organizer to upload my updated binary again.
However in all cases my binary is not being updated. How cam I fix this problem, it is a real headache for me.
Thanks.
You need to supply that authentication data within the iTunesConnect review information. There are specific fields named
Demo Account Information
and
Review Notes
Fill in that account information within that first field.
Try to check the archive date in Organizer before you submit binary to App Store. When ever you make any changes to app Archive it again to reflect changes on your binary. Otherwise your binary won't reflect changes you made on code.
Apps that are “beta”, “demo”, “trial”, or “test” versions will be rejected. If you use any word related to these in the content , name etc. will be rejected.
Secondly Pay special attention when you are using any social networking site information in your app. e.g suppose if you got many permissions from Facebook but you are not using that information in your app your app will reject. So be precise while using permissions from social networking sites.
Apple once rejected my app because i violated the iCloud deal of unpacking 2MB data from app bundle into the file system. So for downloading data more than 2MB should not create any backup. For this you can use non-user data, cache storage or mark it with “Do Not Backup”.
Hope that helps!!

In-App-Purchase item not longer active after app update

I have an App in the App Store which uses an In-App-Purchase item to unlock the full feature set. During all versions so far updates have never been a problem. The customers could download the new version from the App Store and the "full version item" which they did purchase before was still active: They could still use the full version after the update.
Today I have released a new version of the app and several customers are reporting problems with the full version: After the update the app only works as limited trial version. The app seems to have "forgotten" the information about the IAP.
I use MKStoreKit to handle the purchase and the information about the IAP is stored within the KeyChain. The users can restore the full version using the "restore previous purchase function" within the app which calls the corresponding StoreKit function.
How can it be that the information in the key chain is lost?
I do not know if all customers are affected by this problem or just some of them. All that I can tell is, that quite many reported the problem.
I have no idea what the problem might be.
This is the first version using iCloud and therefore it is the first time, that a entitlements file is included in the App. Could this be the source of the problem?
The "Keychain Access Groups" property in the entitlements file is set to "xy.mycompany.MyApp" which is the same as the bundle identifier.
I thought that without the entitlements the app used "xy.mycompany.MyApp" within the key chain to store the IAP information and that the information in the entitlements file is just to let different app share the same information in the key chain. Thus I am not sure if this might have to anything with the IAP problem.
What do you think? Any ideas or suggestions?

Resources