Android app rejection issue with Violation - app-update

We have tried publish a new version of existing app on Play store but the update got rejected With the issue :- Issue: Violation of Families Policy Requirements
Also We have received an email with Title: "Issue: Violation of Families Policy Requirements"
And it also followed by: Apps that contain elements that appeal to children must comply with all Families Policy Requirements. We found the following issue(s) with your app:
Eligibility Issue :-
Webviews:
We don’t allow apps whose primary purpose is to provide a webview of a website, regardless of ownership, or to aggregate content that does not belong to the developer. To resolve this issue, please remove violating content and resubmit your app.
Please help me to sort out this issue

It simply says what you should do: We don’t allow apps whose primary purpose is to provide a webview of a website, regardless of ownership, or to aggregate content that does not belong to the developer.
They cannot control the content when the webview is on the way. Therefore, they simply rejected your app for the families policy requirements. You need to explain why you use Webview or you need to remove the webview logic

Related

Is it possible to avoid collecting specific data in Sentry?

when I’m in a sentry issue description page I can see some information collected by the sentry service and I’d like to avoid collecting them to avoid privacy issues.
The information that I’d like to not see are: app.device and user id as you can see here:
Is it possible? I’m concern about new apple privacy restrictions. I don't know if I understood them correctly, but it is necessary to explain to the user, using a pop up or something similar, that the app is using a third party software to collect data about "app crashing" and "app performance". Giving to the user the possibility to choose to not collect those data would bring to developers a lot of headaches.
I searched in all project settings and documentation but I found only a way to hide certain tags/data but the point is not hiding information, but not collecting them at all.
Thanks
The 'user.id' that Sentry creates is not an identifier that can be used to track the user across apps or devices. It's a random id created when the app runs for the first time and it's sent with all errors that happens.
The sole goal of this ID is to give the developer an idea of how many different users are affected by an issue. The developer (owner of the app) doesn't know exactly who the user is and if that same users reinstalls the app, a new id is generated so technically Sentry would report all new errors as a new user. Which is fine given the goal is to give an approximation of impact of an issue.
Developers might focus on issues that affect more customer than not.
That said, you can strip data in many ways. Through the SDK or in Sentry itself.
If you drop data in Sentry, that is done before the event is written to disk.
Sentry's documentation talks about Scrubbing Sensitive Data here.
Doing it on the SDK side, for example for React Native, you could do:
Sentry.init({
dsn: "https://examplePublicKey#o0.ingest.sentry.io/0",
beforeSend(event) {
// Modify the event here
if (event.user) {
// Don't send user id
delete event.user.id;
}
return event;
},
});
There's also a page talking about Data Privacy in the context of Google and Apple:
https://docs.sentry.io/product/security/mobile-privacy/

iOS10: App rejected due to method called "removeEvents"

Is there any list of methods which are not allowed when they are compiled in the application? Or a syntax that is not allowed?
With this message from Connect recently our app has been rejected due to the removeEvents method name:
Your app uses or references the following non-public APIs:
removeEvents:
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.
End. No more details regarding the finding.
The method is used in the app on a core data object (subclassed from NSManagedObject). The object (and the method) was generated by mogenerator app for quite a long time. I did not find any reference in the updated review guidelines for iOS10 that is relevant to this.
The issue is that in the rejection statement from Apple there is no private api, or a conventional object description, or any principle that I could follow to avoid this next time when the app is being approved. It is then making from the review an unpredictable process.
I could not find any trace of this method using both nm or otool. None of them has found a reference to this.
EDIT: In the iTunes Connect is an option to submit an appeal to the App Review Board. I did not noticed this before. The question is when they will review the review.
No more details? In that case you didn't read carefully. There will be a link to the rejection that explains exactly how to look for this if it happens in a third party library for example. Been there, done that.
So you can file a complaint and they will laugh at you, because you didn't bother reading the app rejection.
To save you the bother, search through your own source code, then use the strings and otool tools to find the library that caused the problem, update the library and check if the problem is gone.
And if you use removeEvents yourself according to your comments, then fix your code.
A member from the review board has contacted us and confirmed that the only way to get the information about a collision with a private api is to let the app pass through the review process. Apple offered to complete a new review in two days and so they did.
I have renamed the method and the app was not rejected.

Titanium Appcelerator App (IOS) publishing issue

Hi I have uploaded my app to iTunes connect. The app is validated and submitted successfully. While publishing the app to the app store my app got rejected because of insufficient meta data
can any one tell me the reason for the same and what changes do I require to make to resolve the issue.
Metadata rejection means that the description/screenshots/search tags, that us anything apart of the IPA, which you provide in iTunes, is not as per the guideline or is not incomplete.
In the iTunes Resolution Center they will mention that issue in details. If not you can contact them through the chat option and ask for more information. Usually the Resolution Center will provide all the details.
Insufficient meta data means you might have provided invalid meta data. There are 17 guidelines given by Apple for Metadata as given below. Make sure that you are following all of them.
Apps or metadata that mentions the name of any other mobile platform will be rejected
Apps with placeholder text will be rejected
Apps with names, descriptions, screenshots, or previews not relevant to the content and functionality of the App will be rejected
App names in iTunes Connect and as displayed on a device should be similar, so as not to cause confusion
Small and large App icons should be similar, so as to not to cause confusion
Apps with App icons, screenshots, and previews that do not adhere to the 4+ age rating will be rejected
Apps with Category and Genre selections that are not appropriate for the App content will be rejected
Developers are responsible for assigning appropriate ratings to their Apps. Inappropriate ratings may be changed/deleted by Apple
Developers are responsible for assigning appropriate keywords for their Apps. Inappropriate keywords may be changed/deleted by Apple
Developers who attempt to manipulate or cheat the user reviews or chart ranking in the App Store with fake or paid reviews, or any other inappropriate methods will be removed from the iOS Developer Program
Apps that recommend that users restart their iOS device prior to installation or launch may be rejected
Apps should have all included URLs fully functional when you submit it for review, such as support and privacy policy URLs
Apps with screenshots, previews, and marketing text that do not clearly identify supplemental content or items that must be purchased separately (e.g. using IAP) will be rejected
App previews may only use video screen captures of the app, voice-overs, and textual and design overlays, or the app will be rejected
Apps with previews that display personal information of a real person without permission will be rejected
App previews may only include music that is licensed for that purpose in all selected territories
App previews that include content played or streamed via the app (e.g. iTunes playlist, YouTube streaming video) that is not licensed for use in the preview will be rejected
Finally, you have to make sure that you have provided information about how to use your application so that they can easily test the application.

Apple iTunes Connect Analytics: attribution provider and campaign id value passing to the app delegate

The new iTunes connect has analytics features now. You can specify the provider (pid) id and campaign id (cid) in the url. e.g.
https://itunes.apple.com/fr/app/candy-crush-saga/id553834731?mt=8&pid=1234&cid=My_Campaign
Can you pass those values into the app for various purposes?
I could not find anything that points to that, even after checking:
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
ref:
http://www.applift.com/blog/new-era-attribution-analytics.html
Unfortunately these params are not passed into the app. They are only used for iTunes Connect stats.
Here are the two common workarounds:
Using a fingerprint to implement deferred deep link and passing the params through that link (Tapstream can do this).
Using a provider like Tune/MobileAppTracking to match the link using the ID for advertising (IDFA).
I wrote a blog post to explain the details: https://attributionapp.com/blog/lets-solve-ios-attribution-methods/
I will edit this response in the future if Apple changes their API. If you let Apple know what you want to build and why passing in the params is a better policy they might change their minds faster: https://developer.apple.com/contact/
If you'd like to build your own fingerprinting mechanism to handle all of this deep linking like we have at branch.io, I can give you some instructions how! One side note as I read it in the accepted answer comments is that the INSTALL_REFERRER in Google Play is often very slow (> 1s delay) to launch after install, so if you're depending your user experience on this, your users in are in for a bumpy ride.
Here's how we built fingerprinting on iOS:
Configure a server endpoint (something like yoursite.com/redirect) to accomplish two things:
Serve up some client side JS to open your app if installed or fall back to the App Store if not. I listed out this code in this answer
Capture a set of of parameters about the clicking user by reading their user agent, etc. Here's a simple subset that will work well:
OS
OS version
IP address
Device model
When the user opens the app, send back that set of parameters, as read from the app to a new endpoint (something like yoursite.com/completematch).
If there's a match, you can pass back the parameters.
If you want to get savvy, you can drop a cookie on yoursite.com and save the match to the IDFA received from the app. Ideally, you'd only do this if you redirect into the app immediately so you're 100% sure of the match. Then if that same user ever clicks on the link again and installs the app, you don't have to use fingerprinting as you can just use the cookie-IDFA pair. We've got hundreds of millions of these at Branch so fingerprinting is more of a fallback mechanism at this point.

Google Analytics iOS SDK - Multiple accounts

I am trying to make my view controllers be tracked by two different accounts on my iPhone app. I am currently using the version 1.5.1 of the SDK, which doesn't support this functionality. On the documentation of the version 2, it says that it supports multiple trackers, but I couldn't figure out a way to make both track the same view. Does anyone know how can I do that?
Thanks!
here is the detailed explaination for the same
As of version 2 of the SDK, you can use multiple trackers in a single implementation, one per unique tracking ID. All trackers share the same global state held by your GAI singleton,including settings like periodic dispatch interval, app-level opt out, and debug mode.
Keep in mind that automatic screen tracking and uncaught exception tracking will only use one tracker to make tracking calls. If you are using these features and want to send similar data to other trackers, you will need to do so manually.
For reference, automatic screen tracking uses the tracker specified in the tracker property of a given GAITrackedViewController. Uncaught exception tracking uses the default tracker specified in your GAI instance.
Here the detailed code & documenation about the same,you should view this
I am sure this'll help you...!!!