How to fill in Google Play Data Safety form taking into account Firebase Analytics and Firebase Crashlytics libraries? - crashlytics

I have an app which does not push any data to any server except that it uses the Firebase Analytics and Firebase Crashlytics libraries to submit analytics and crash reports to my Firebase account. My use of both of these libraries is bare minimum.
I submit analytics events as follows:
FirebaseAnalytics.getInstance(applicationContext).logEvent("SomeEvent", bundle)
I submit exceptions as follows:
FirebaseCrashlytics.getInstance().recordException(exception)
Neither the bundles submitted via the FirebaseAnalytics instance nor the exceptions submitted via the FirebaseCrashlytics instance contain any of the user's personal data or any data that identifies the user. The exceptions just convey that a certain area of the application has failed and the bundles just convey that a certain button was tapped without linking in any way to the user.
With this in mind, how do I answer the following "Data collection and security" questions in the Google Play Data Safety form:
Does your app collect or share any of the required user data types? [Yes/No]
Is all of the user data collected by your app encrypted in transit? [Yes/No]
Do you provide a way for users to request that their data is deleted? [Yes/No]

There is a repo with all required information required for the Data safety form - link

The same applies to firebase as to admob
Does your app collect or share any of the required user data types?
Yes
Is all of the user data collected by your app encrypted in transit? Yes
Do you provide a way for users to request that their
data is deleted? No
Location > Approximate location
App activity > Page views and taps in app
App info and performance > Crash logs, Diagnostics
Device or other identifiers > Device or other identifiers
How do I know this for sure?
Because under device and other identifiers the extra info states:
Identifiers that relate to an individual device, browser or app. For
example, an IMEI number, MAC address, Widevine device ID, Firebase
installation ID or advertising identifier.
Which indicates that they do consider Firebase to be collecting data

Related

Can I control the list of chargeable connections in the IPP inside an Intuit App Center App?

I am developing an Intuit App Center app using the V3 SDK written in vb.net.
Is it possible to get/control the list of connected users that is listed in the Reports section of the Manage My Apps area in the Intuit Partner Platform? Specifically, the area where you view your connections and are able to disconnect users so you don't get charged for that connection.
I would like to be able to control that list from within my application for billing purposes. I have heard that it is possible to manipulate the list programmatically but I'm unsure how to do it.
This should definitely be do-able, but there's not a specific API for it.
There are really 3 components to tracking this information:
Have they EVER connected - you'll know this already because if they connected they will have gone through the OAuth process on your website and you'll have a token for them.
Are they connected NOW - you can test this by making an OAuth request to any of Intuit's services - if you get back a successful response, you know they are currently connected, vs. if you get back a 401 error you know the token is expired/no longer good.
Disconnecting them - you can choose to explicitly disconnect a user (and thus no longer get charged for their usage) by using the disconnect API call.
There is no billing API available.
You need to check it from the appcenter.
Ref - https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0050_managing_your_app/connection_report
Thanks

Real-time Push notifications with Firebase

I recently signed up to use Firebase and I can't seem to figure out how to push notifications to specific users.
For my use, I guess you can think of it like Facebook. Whenever a user does something, say posts an interesting article for their friends to read, I want all of the user's friends to be notified of that event. So, using Firebase, how would one make it possible to notify only their friends and not everyone? My database stores the conenctions.
Perhaps there is a way to have each user be a node in the Firebase database and each time a notification is sent, The user will constantly check his node, and if something appears, pulls it and then delete it.
The examples on Firebase seems to be sort of basic. I wish there was a user-specific push notification example.
Now Firebase supports Push Notification. Google rebranded GCM to Firebase Cloud Messaging and it now offers this cross platform service. Firebase also offers notifications.
These are the differences between these two services:
Firebase Cloud Messaging provides a complete set of messaging capabilities through its client SDKs and HTTP and XMPP server protocols. For deployments with more complex messaging requirements, FCM is the right choice.
Firebase Notifications is a lightweight, serverless messaging solution built on Firebase Cloud Messaging. With a user-friendly graphical console and reduced coding requirements, Firebase Notifications lets users easily send messages to reengage and retain users, foster app growth, and support marketing campaigns.
If you want a more detailed comparison. Read this.
There's a good explanation of how you can send notifications to specific users here:
How to send an alert message to a special online user with firebase
Basically you need to have each user observe a unique path, and then write data updates to the appropriate path.

Save data on iOS device permenatly

I want to save data on device itself that would be persistent even after deleting the app and installing it again (data can even be one int/date).
According to my knowledge it is impossible because each app can store data only on it's sandbox (I know I can use iCloud etc. but I don't want any services user can not have or give the app specific permissions).
As to my understanding the only option to do that is to store it on my server.
But, Apple doesn't allow to send UDID or any other specific device ID and I can't get the iTunes ID. I know I can use any other ID like Facebook ID but the app doesn't have it and that would make a really bad user experience.
I've download apps that does just that successfully (saving data specifically to my device that been recovered even after deletion and without the need to enter any ID or login process). How do they do it? Do they send UDID to some server and apple miss that or there is a way to save data outside the app sandbox?
Well there is the KeyChain, which can store data the would kept even if you delete the app.
We do that too in our app:
Basiclly we create an UDID of our own and store that on the device (in the keychain).
Combined with user id that gives us all we need on the server side to identify the user and his device. We don't store any other app data on the device, all is server managed.
You could pack your data up, store it in the documents folder for your app, and back up your device to the cloud or iTunes. you can then do a restore to get it back. You just can't do anything on your phone between the backup and the restore. Just saying.

Posting on game activity feed

Is there any way to post on a user's activity feed for an iOS game? There seems to be no API for this but there is a permission
user_games_activity
on https://developers.facebook.com/docs/authentication/permissions/#open_graph_perms
I have noticed that there are activity feeds for Facebook games itself, but I haven't come across an activity feed regarding an iOS app.
Any help would be appreciated, thanks!
You can post user actions/achivements from iOS by taking publish_actions extended permission, but you need backend server support. You need a public url with open graph tags for each object/achievement.
Publish actions
Allows your app to publish to the Open Graph using Built-in Actions,
Achievements, Scores, or Custom Actions. Your app can also publish
other activity which is detailed in the Publishing Permissions doc.
Note: The user-prompt for this permission will be displayed in the
first screen of the Enhanced Auth Dialog and cannot be revoked as part
of the authentication flow. However, a user can later revoke this
permission in their Account Settings. If you want to be notified if
this happens, you should subscribe to the permissions object within
the Realtime API.
If you want to post achivements, here is basic info. For more info see the below link.
The Graph API for achievements allows game developers to publish user
achievements in their game to provide more meaningful and relevant
stories.
Note: This API is only available to applications categorized as
'Games'. You can categorize your app as 'Games' in the Developer app
by navigating to About > Basic Info and selecting 'Games` in the drop
down menu in the category field.
FYI: https://developers.facebook.com/docs/achievements/
FYI: Improving app distrubution

Allow user to create account on one device and use that account on others

I want to make an application that has some views for information display. If I install my app on my iPhone then it should display the info. If I then install that app on my iPad then the app should recognize the device and display the info related to my account.
Is there any way to find the single user of two devices without the user's iTunes credentials, or is it possible to generate a key that can identify the common user of both devices?
No, currently there is no way to associate multiple devices to a single user owning those devices given the information you've provided.
However, if you added, "the information I want to display in the views, pertains to the same user account in Game Center for both devices", then you could use the player's identifier from Game Kit API.
https://developer.apple.com/game-center/
This is being added well after the fact, but:
You could use iCloud APIs to accomplish this. These are distinct from iTunes credentials, but obviously the same type of prerequisite in that the user must have an account and it's not under your control.