How can I prevent volume changes when the users switch their roles in an interactive live streaming Agora channel? - agora.io

I am building my app on iOS and Android with Agora's Video SDK. For some reason if the user changes his/her role during the live streaming, the volume of the stream changes. Is there a way to prevent that?

To ensure a better audio experience in different scenarios, by default, the SDK adjusts the underlying audio settings when the user switches user roles, as follows:
The audience role uses the media volume control.
The host role uses the call volume control.
The media volume and call volume have separate volume control mechanisms.
To avoid volume changes when the user switches user roles, ensure that the volume type used by the SDK remains the same before and after the switch. The volume type used by the SDK varies from case to case. See Volume type introduction for details.
For example, if you use AUDIO_SCENARIO_CHATROOM_ENTERTAINMENT on Android and AUDIO_SCENARIO_GAME_STREAMING on iOS, then even if the user role switches and the audio routing changes, the user's volume type does not change, and thus the volume is not affected.

Related

Making the react native app stripe to live mode

I am working on react native app and the app is using the test mode stripe and I am also making the test stripe to live,
I have a simple question, Is there anything I have to change while making the stripe to live mode,
I changed the switch to live in the stripe dashboard.
I changed the key and secret in app and server.
Do I also have to change something else?
And what are these and why and how are they used and where can I find these in the dashboard.
merchantIdentifier: 'merchant.com.stripe.react.native',
urlScheme: 'stripe-example',
The testmode toggle in the Stripe dashboard has no impact on what mode your integration is operating in, it only changes what data you're viewing in the dashboard. When the toggle is on, the Stripe dashboard will display the testmode data for your account, and when it is off you will see livemode data.
The secret and publishable key that you provide dictate what mode your integration will operate in, and are likely the only values that you need to change. source
The merchantIdentifier is not a value that you find, but rather is one that you set when you're registering for an Apple Merchant ID. It is an optional parameter that you can omit if you're not planning to accept Apple Pay payments. source
urlScheme is an optional parameter that is only needed if you're planning to manually handle the 3DS authentication flow rather than rely on the pre-built functionality that Stripe provides. source

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

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

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.

Apple ID retrievable from App download within Cocoa Touch

Hi
I'm working on an iphone app that needs to be maintain a somewhat unique identifier per download. Is there a way to retrieve either the Apple ID used to download the App or another identifier I can use to link all devices with that download to a remote database/service?
Basically I want a single instance of my custom-generated data sitting on whatever device is linked to a certain Apple ID. If iTunes signs any App that you download, using that checksum would also be an option.
Any thoughts?
If you use IAP(In App Purchase), you can tie a users purchase to a single receipt, and verify that receipt against Apple's servers.
For App store purchases, as opposed to IAP, Apple allows, and pretty much forces a developer to allow their App store apps to run identically on as many devices as a customer can put their iTunes account on, with no information available to the app about whether this was the customer's first install or their Nth. If that business model doesn't work for you, don't put the app for sale in the App store.
As far as I am aware, there is absolutely no way to get access to the current signed-in Apple ID on the device. Your only real option is to maintain your own username/login combo that the user has to enter on each device they own.
I don't believe you can get the Apple ID, but you can however get the current device's ID via the UIDevice uniqueIdentifier method.
For example:
UIDevice *ourDevice = [UIDevice currentDevice];
NSString *uniqueIdentifier = [ourDevice uniqueIdentifier];
However, you should note the following (emphasis mine) from the above linked document:
A device’s unique identifier
(sometimes abbreviated as UDID for
Unique Device Identifier) is a hash
value composed from various hardware
identifiers such as the device serial
number. It is guaranteed to be unique
for each device. The UDID is
independent of the device name. For
devices that use a SIM (subscriber
identity module) card, the UDID is
independent of the SIM card.
For user security and privacy, you
must not publicly associate a device’s
unique identifier with a user account.
You may use the UDID, in conjunction
with an application-specific user ID,
for identifying application-specific
data on your server.

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.