You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android API 31下React Native应用如何申请事件追踪与推送权限?

Android API 31 下 React Native 集成第三方追踪与推送的权限配置

针对你要集成 Facebook SDK、Branch.io 实现行为追踪和推送的需求,以下是 API 31(Android 12)及以上版本的权限配置细节:

一、用户行为事件追踪权限

基础事件追踪

普通的应用内行为(如页面浏览、按钮点击)上报不需要额外危险权限,你已配置的 INTERNET 权限足够支持 SDK 向服务器发送数据。

广告归因/ID 追踪

如果需要基于广告 ID 做用户归因或精准投放,需在 Manifest 中添加:

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

注意:面向欧盟用户时,必须提供关闭广告追踪的选项;API 33+ 需处理用户禁用广告 ID 的场景,避免崩溃。

第三方 SDK 额外配置

  • Facebook SDK:除权限外,需在 Manifest 中添加应用信息和内容提供者:
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    <meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
    <provider 
        android:name="com.facebook.FacebookContentProvider" 
        android:authorities="com.facebook.app.FacebookContentProvider{你的应用ID}" 
        android:exported="true"/>
    
  • Branch.io:无需新增权限,但要配置深度链接的 Intent Filter,确保追踪跳转行为:
    <intent-filter>
        <data android:scheme="你的Branch自定义scheme"/>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
    </intent-filter>
    

二、推送通知权限

API 31+ 对推送权限做了严格限制,必须动态申请 POST_NOTIFICATIONS 权限,仅在 Manifest 声明无效。

1. Manifest 配置

先添加权限声明:

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- 保留推送基础依赖权限 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

2. 动态申请权限(React Native 代码)

用 react-native-permissions 库实现权限申请弹窗:

import { Platform, PermissionsAndroid } from 'react-native';

async function requestNotificationPermission() {
  if (Platform.OS === 'android' && Platform.Version >= 31) {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
        {
          title: '请求通知权限',
          message: '我们需要通知权限向您推送重要更新和消息',
          buttonNegative: '取消',
          buttonPositive: '允许',
        },
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log('通知权限已获取');
      } else {
        console.log('通知权限被拒绝');
      }
    } catch (err) {
      console.warn('申请权限出错:', err);
    }
  }
}

3. 通知渠道配置

API 26+ 必须创建通知渠道,API 31+ 下渠道是推送的必要前提,用 react-native-push-notification 示例:

import PushNotification from 'react-native-push-notification';

PushNotification.createChannel(
  {
    channelId: 'app_main_channel',
    channelName: '应用主通知',
    channelDescription: '接收应用所有通知内容',
    importance: 4, // 高优先级,会弹出通知
    vibrate: true,
  },
  (isCreated) => console.log('渠道创建状态:', isCreated),
);

4. 第三方推送注意事项

Facebook 和 Branch 的推送功能通常依赖 FCM(Firebase Cloud Messaging),需先集成 FCM,并在 Manifest 中配置相关服务:

<service 
    android:name=".MyFirebaseMessagingService" 
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

三、实用建议

  • 清理冗余权限:你当前 Manifest 中的 CAMERA、READ_CONTACTS 等权限如果和追踪/推送无关,建议移除,降低用户抵触感,同时符合 Google Play 权限规范;
  • 隐私合规:在应用内隐私政策和 Google Play 商店描述中,明确说明第三方 SDK 的追踪用途和推送目的;
  • 兼容性测试:在 API 31 真机/模拟器上测试权限申请流程,确保拒绝权限后应用核心功能不受影响;
  • 跟进官方文档:Facebook 和 Branch 会持续更新 Android 新版本的适配指南,优先参考官方最新配置。

内容的提问来源于stack exchange,提问作者alia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 00:50:21