Programmatically using Crashlytics to satisfy GDPR - ios

I'm about to release a scientific iOS app into the App store, for the first time in a few since years. Since I last released an app, GDPR has happened and I'm wondering about the programming mechanics developers are using to satisfy it:
Give the users a choice of enabling Crashlytics/Fabric
Turn off Crashlytics without restarting the iOS app? Is that even possible
Providing a user button to delete the user's data programmatically - is anyone actually using Crashlytics API to do this
The app's backend is Azure based - I don't collect any user data but apparently even Azure collecting IP addresses in a log is sufficient to make my one-person company liable to a fine. Any suggestions how I would programmatically tackle that?
My sense at the moment is to not make my (free) app available in EU territories - Has anyone else given up on EU distribution because of GDPR?

Actually i dont have answer to all your questions, but here are some.
If you want to give user a choice to enable crashlytics or fabric.
First of all, for initialising crashlytics, you use below code normally as :
Crashlytics.start(withAPIKey: kCrashlyticsFabricKey)
Fabric.with([Crashlytics.self])
Now, run this code in selector method of the button that you will provide to enable this in your app.
As per my knowledge, turning of Crashlytics is not possible without restarting app. As crashlytics is never used by "Users" of app, it is used by developer of app to get crash data, so it is simple that developer never wants it to turn off, so Crashltics have provided method as start(withAPIKey:) but no any stop method, and i think there are very less chance that they will provide such methods in near future.
But yes, you have way to stop submitting report. You can subscribe to CrashlyticsDelegate, in which it will give you callback for this method - (void)crashlyticsDidDetectReportForLastExecution:(CLSReport *)report completionHandler:(void (^)(BOOL submit))completionHandler, here in completionHandler if you provide submit = false, then it will ignore that crash Report.
So, if user have disabled it, then you can stop submitting reports in this way.
No idea about this.
No idea about this too.

Related

SKAdNetwork warning from AdMob and when is the App Tracking Transparency alert needed for iOS apps

I have just started getting a warning message in AdMob for my iOS game with ads:
"Some apps haven’t been configured to use SKAdNetwork"
And that I may not be getting some advert credits. It looks easy to fix according to this:
https://developers.google.com/admob/ios/ios14
I just add a key to Info.plist
But on that link it also mentions App Tracking Transparency authorization and I’m unsure what to do about that. I know what ATT is - it presents an alert asking for permission track and affects access to the IDFA. But it’s a bit strange that Google says “If you decide to include ATT”. It’s like Google doesn’t really want you to do it.
Also, as far as I can see, the IDFA is still accessible without adding the ATT alert even in iOS 14.4. So some questions:
Does anyone know when (or if) Apple will enforce requiring the ATT alert? They used to say early 2021 - is there a firmer date or specific version number? It does not seem to be enforced yet (my game update without it was approved this week), and the IDFA seems perfectly accessible on iOS 14.4 without the alert. I can print it out with:
Console.WriteLine("AdvertisingIdentifier={0}", AdSupport.ASIdentifierManager.SharedManager.AdvertisingIdentifier);
And it’s not all zeros.
Am I really losing ad revenue without the SKAdNetwork key when the IDFA is still accessible anyway?
Is SKAdNetwork the future and is IDFA being sort of phased out? So in the future, AdMob will not use IDFA at all?
Should I go ahead and implement the ATT alert or wait (I’m worried most people will deny tracking, or it may put them off installing the game at all). Am I losing anything by not having the alert (I don’t think so, yet).
they will never enforce it, because if you do not show it that means that your app does not track users directly.
Note: I recommend not using ATT because most users ask you not track them anyway.
Yes, if a user gave you a permission to track them then they will get more personalized ads which usually translate into more revenue but as I stated in the note above, most of users will not let you track them.
Yes it seems that way, SKAdNetwork is needed to measure the success of ad campaigns while maintaining user privacy.
No, I think this is not needed

Force removal/invalidation of iOS app from user devices

Assuming you created an app that users have downloaded that is just awful and you neither want to fix it nor have anyone continue to use it so that it won't tarnish your brand, is there a way to end its life on user's iOS devices?
Curious if there is some store setting to force it to work with earlier versions of iOS and invalidates the current app, or code that would force an update that says the app is no longer available.
As many have confirmed, there is no way to remove an application from someone's device. For these cases though, many companies have servers that the application sends a request to on launch, that returns either a need to update the app, a message, or to tell the user the app has been discontinued and that the app cannot be used anymore, stopping them from using the app from there on.
The last use case might be useful to you, but of course this is a proactive solution, not a reactive one.

Apple keeps rejecting app with AdMob because of bluetooth notification string not correct

Since IOS 13 came to live old 3 party APIs stopped working, In my app i needed to fix few because of that so i needed to fit it to IOS 13.
Since then Apple keeps rejecting my app because of Bluetooth user notification is not correct.
I just don't know what to write there, It is so annoying. I have to add it because of AdMobs and there is nowhere to say what to write over there.
I don't user BT in my app, it is just the AdMobs beacons that needs it probably.
I've tried:
and
And i will probably will have the same issue with the calendar message also.
When i try to remove it they demand it and then not approving it.... I understand maybe the first one but what wrong with the the second one? why is that no clear enough for them?
10x
see apple docs below: https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/requesting-permission/
Explain why your app needs the information. Provide custom text (known
as a purpose string or usage description string) for display in the
system's permission request alert, and include an example. Keep the
text short and specific, use sentence case, and be polite so people
don't feel pressured. There’s no need to include your app name—the
system already identifies your app. For developer guidance, see
Protecting the User's Privacy.
you're not explaining exactly why you need access to bluetooth. you must be specific. saying, "XYZ app needs access to bluetooth to interact with beacons to serve you location based advertisements"
something like that should do. no cutting corners, no trying to put it off on Google, just say it like it is and you'll likely pass through app approval without a problem.

Disable crashlytics/Fabric at runtime in iOS

I want to disable the crashlytics at run time in iOS app.
I could see it is possible using the latest Firebase api. How to do this with old Fabric/Crashlytics api?
Update: My app will get locked if the user goes to background, if the app is locked then without user authentication I shouldn't call any api(http request, accessing database). So I want to restrict the crashlytics api as well. When the app comes to foreground, crashlytics/fabric calling the http request so I want to avoid this if the user is not authenticated.
Fabric/Firebaser here - you can conditionally choose to initialize or skip the initialization of Fabric with an opt-in flag set by your user, but there isn't a (supported) way to totally disable Crashlytics from running when it has already been initialized. There is a way, however, to control your submission behavior with Crashlytics, but might not suit your use case. Also, check out these docs for more information on the opt-in/opt-out mentioned above.

How to flag content and block user with app that manages Facebook content? rejected by iTunes store because of safety guidelines

We created a video sharing app with unity, crazy right, but we did it. Not to give any IP away, the app allows users to upload videos to a public page. unfortunately apple rejected our app and this is there response.
From Apple
Guideline 1.2 - Safety
Your app enables the display of user-generated content but does not have the proper precautions in place.
Next Steps
To resolve this issue, please revise your app to implement all of the following precautions:
- Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content or abusive users
- A method for filtering objectionable content
- A mechanism for users to flag objectionable content
- A mechanism for users to block abusive users
- The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content
So i asked them to call me because i don't understand why i should have built in precautions if Facebook already has a team that does this, the content is saved on a Facebook public page. Long story short the apple agent told me that it is my responsibility to do so. Who am i to argue with apple right? So off to Facebook developer site i went and i can't find anything in the reference that will allow me to do so. which makes now sense because why would i want to block someone on my app but on Facebook side you would still be harassed by said person right?
I also went looking for apps that manage Facebook content and they seem to be able to do it. here is the image and I'm trying to block my friend. this app is called Friendly if anyone wanted to know
Can anyone please assist or at least point me into the right direction. Thanks in advance!
Christoph Broeckmann on the Facebook Developer community page wrote this as a reply to the same question;
There is no API to unfriend or block users. Any 3rd-party app you see
doing this is likely achieving this in a non-allowed way.
Those guidelines from Apple primarily apply to stuff that happens
inside your app - if you display content within your app, then you
need to provide the user with ways to report it, block it, or block
the app user that created the content - all within your app. They can
hardly demand that your app removes friendships between users on
totally different platforms.
Maybe they did not understand correctly that you do not show content
within the app itself. But if they did understand what your app does
correctly. and still think those rules should apply - then there is
little you can do about that.
so i think I'm going to build it into my own app and upload to apple. Thanks peeps!

Resources