-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Description
Issue
Hi Everyone,
I am trying to publish a Kids app where I have added Firebase Analytics to track Screen Views and Button Clicks. Apart from this, I am using brightcove data collection API to moniter video views and engagement etc which does not seems to be the problem for rejection. This is what the rejection says from apple side:
Guideline 1.3 - Safety - Kids Category
We noticed that your Kids Category app includes analytics, advertising and collects, transmits, or has the ability to share personal information or device information with third parties. Specifically:
- Your app includes third-party analytics or third-party advertising with the ability to collect, transmit or share identifiable information, including, for example, Device Name and IDFA.
Next Steps
To resolve this issue, please remove this functionality or revise your app so that no personally identifiable information or device information is sent to third parties.
Project Files
new
Javascript
Click To Expand
package.json:
{
"name": "abc",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"lint": "eslint .",
"start": "react-native start",
"test": "jest"
},
"dependencies": {
"@apollo/client": "^3.13.8",
"@gorhom/bottom-sheet": "5.1.5",
"@react-native-async-storage/async-storage": "^2.2.0",
"@react-native-community/hooks": "^100.1.0",
"@react-native-community/netinfo": "^11.3.3",
"@react-native-community/slider": "4.5.6",
"@react-native-firebase/analytics": "21.0.0",
"@react-native-firebase/app": "21.0.0",
"@react-native-masked-view/masked-view": "^0.3.0",
"@react-navigation/bottom-tabs": "^6.4.0",
"@react-navigation/material-top-tabs": "^6.2.4",
"@react-navigation/native": "^6.0.8",
"@react-navigation/native-stack": "^6.9.0",
"@reduxjs/toolkit": "^1.8.5",
"graphql": "^16.11.0",
"lottie-react-native": "^7.3.4",
"minisearch": "^7.2.0",
"moti": "0.27.5",
"patch-package": "^8.0.0",
"postinstall-postinstall": "^2.1.0",
"react": "18.3.1",
"react-native": "0.76.0",
"react-native-bootsplash": "^6.3.11",
"react-native-device-info": "^14.0.4",
"react-native-dotenv": "^3.4.11",
"react-native-gesture-handler": "2.25.0",
"react-native-google-cast": "4.8.3",
"react-native-linear-gradient": "2.6.2",
"react-native-orientation-locker": "^1.7.0",
"react-native-pager-view": "^6.8.1",
"react-native-paper": "^5.14.5",
"react-native-permissions": "^5.4.4",
"react-native-reanimated": "3.16.1",
"react-native-safe-area-context": "^4.12.0",
"react-native-screens": "^3.34.0",
"react-native-svg": "15.8.0",
"react-native-svg-transformer": "1.3.0",
"react-native-system-navigation-bar": "^2.6.4",
"react-native-tab-view": "3.2.1",
"react-native-toast-message": "2.1.5",
"react-native-uuid": "^2.0.3",
"react-native-vector-icons": "^10.2.0",
"react-native-video": "^6.16.1",
"react-native-webview": "13.12.2",
"react-redux": "8.0.4",
"redux-persist": "6.0.0"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0",
"@react-native-community/cli": "15.0.0-alpha.2",
"@react-native-community/cli-platform-android": "15.0.0-alpha.2",
"@react-native-community/cli-platform-ios": "15.0.0-alpha.2",
"@react-native/babel-preset": "0.76.0",
"@react-native/eslint-config": "0.76.0",
"@react-native/metro-config": "0.76.0",
"@react-native/typescript-config": "0.76.0",
"@types/react": "^18.2.6",
"@types/react-native-vector-icons": "^6.4.18",
"@types/react-test-renderer": "^18.0.0",
"babel-jest": "^29.6.3",
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "18.3.1",
"typescript": "5.0.4"
},
"engines": {
"node": ">=18"
},
"packageManager": "[email protected]+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
}
firebase.json for react-native-firebase v6:
# N/AiOS
Click To Expand
ios/Podfile:
- I'm not using Pods
- I'm using Pods and my Podfile looks like:
$RNFirebaseAnalyticsWithoutAdIdSupport = true
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
platform :ios, '15.6'
prepare_react_native_project!
target 'abc' do
config = use_native_modules!
use_frameworks! :linkage => :static
$RNFirebaseAsStaticFramework = true
use_react_native!(
:path => config[:reactNativePath],
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
# ✅ Add react-native-permissions handlers here
permissions_path = '../node_modules/react-native-permissions/ios'
# Bluetooth permission handler for Chromecast
# pod 'Permission-BluetoothPeripheral', :path => "#{permissions_path}/BluetoothPeripheral"
# (Optional) Add other permissions if needed:
# pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
# pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse"
target 'abcTests' do
inherit! :complete
# Pods for testing
end
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false
)
end
endAppDelegate.m:
#import "AppDelegate.h"
#import "RNBootSplash.h"
#import <GoogleCast/GoogleCast.h>
#import "Orientation.h"
#import <Firebase.h>
#import <React/RCTBundleURLProvider.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.moduleName = @"abc";
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
self.initialProps = @{};
[FIRApp configure];
NSString *receiverAppID = kGCKDefaultMediaReceiverApplicationID;
GCKDiscoveryCriteria *criteria = [[GCKDiscoveryCriteria alloc] initWithApplicationID:receiverAppID];
GCKCastOptions* options = [[GCKCastOptions alloc] initWithDiscoveryCriteria:criteria];
[GCKCastContext setSharedInstanceWithOptions:options];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [self bundleURL];
}
- (NSURL *)bundleURL
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return [Orientation getOrientation];
}
- (void)customizeRootView:(RCTRootView *)rootView {
[super customizeRootView:rootView];
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView]; // ⬅️ initialize the splash screen
}
@end
Android
Click To Expand
Have you converted to AndroidX?
- my application is an AndroidX application?
- I am using
android/gradle.settingsjetifier=truefor Android compatibility? - I am using the NPM package
jetifierfor react-native compatibility?
android/build.gradle:
// N/Aandroid/app/build.gradle:
// N/Aandroid/settings.gradle:
// N/AMainApplication.java:
// N/AAndroidManifest.xml:
<!-- N/A -->Environment
Click To Expand
react-native info output:
OUTPUT GOES HERE
- Platform that you're experiencing the issue on:
- iOS
- Android
- iOS but have not tested behavior on Android
- Android but have not tested behavior on iOS
- Both
react-native-firebaseversion you're using that has this issue:21.0.0
Firebasemodule(s) you're using that has the issue:e.g. Instance ID
- Are you using
TypeScript?Y/N&VERSION
- 👉 Check out
React Native FirebaseandInvertaseon Twitter for updates on the library.