Expo AgeRange
一个通过 Android 上的 Play Age Signals API 和 iOS 上的 Declared Age Range 框架提供年龄范围信息访问的库。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
重要 此库目前处于 alpha 阶段,并且会频繁出现破坏性变更。
expo-age-range 提供对用户年龄范围信息的访问。它在 Android 上使用 Google 的 Play Age Signals API,在 iOS 上使用 Apple 的 Declared Age Range framework。
此库允许你从应用用户那里请求年龄范围信息,以帮助你遵守适龄内容法规(例如 美国得克萨斯州 的相关要求),并在应用中提供适龄体验。
限制
我们强烈建议在真机上测试该功能,因为模拟器运行时可能无法按预期工作。
安装
- npx expo install expo-age-rangeIf you are installing this in an existing React Native app, make sure to install expo in your project.
在 app 配置中进行配置
设置 iOS 项目
要在 iOS 上使用年龄范围 API,你需要使用 Xcode 26.0 或更高版本构建项目。需要 com.apple.developer.declared-age-range entitlement。将其添加到你的 app config 文件中:
{ "expo": { "ios": { "entitlements": { "com.apple.developer.declared-age-range": true } } } }
Are you using this library in an existing React Native app?
对于现有的 React Native 项目,将该 entitlement 添加到项目的 ios/[app]/[app].entitlements 文件中:
<key>com.apple.developer.declared-age-range</key> <true/>
使用
import * as AgeRange from 'expo-age-range'; import { useState } from 'react'; import { StyleSheet, Text, View, Button } from 'react-native'; export default function App() { const [result, setResult] = useState<AgeRange.AgeRangeResponse | { error: string } | null>(null); const requestAgeRange = async () => { try { const ageRange = await AgeRange.requestAgeRangeAsync({ threshold1: 10, threshold2: 13, threshold3: 18, }); setResult(ageRange); } catch (error) { setResult({ error: error.message }); } }; return ( <View style={styles.container}> <Button title="Request Age Range" onPress={requestAgeRange} /> {result && ( <Text style={styles.result}> {'error' in result ? `错误: ${result.error}` : `下限年龄: ${result.lowerBound}`} </Text> )} </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', padding: 20, }, result: { marginTop: 20, fontSize: 16, }, });
其他资源
- Play Age Signals API:Android 的年龄信号文档
- Declared Age Range framework:iOS 的声明年龄范围文档
API
import * as AgeRange from 'expo-age-range';
Methods
| Parameter | Type |
|---|---|
| options | AgeRangeRequest |
Prompts the user to share their age range with the app. Responses may be cached by the OS for future requests.
Promise<AgeRangeResponse>A promise that resolves with user's age range response, or rejects with an error.
The user needs to be signed in on the device to get a valid response.
When not supported (earlier than iOS 26 and web), the call returns lowerBound: 18, which is equivalent to the response of an adult user.
Types
Options for requesting age range information from the user.
| Property | Type | Description |
|---|---|---|
| threshold1 | number | The required minimum age for your app. |
| threshold2(optional) | number | An optional additional minimum age for your app. |
| threshold3(optional) | number | An optional additional minimum age for your app. |
Response containing the user's age range information.
Contains age boundaries and platform-specific metadata.
| Property | Type | Description |
|---|---|---|
| activeParentalControls(optional) | string[] | Only for: iOS List of parental controls enabled and shared as a part of age range declaration. |
| ageRangeDeclaration(optional) | 'selfDeclared' | 'guardianDeclared' | Only for: iOS Indicates whether the age range was declared by the user themselves or someone else (parent, guardian, or Family Organizer in a Family Sharing group). |
| installId(optional) | string | Only for: Android An ID assigned to supervised user installs by Google Play, used to notify you of revoked app approval. |
| lowerBound(optional) | number | The lower limit of the person’s age range. |
| mostRecentApprovalDate(optional) | number | Only for: Android The effective date (timestamp) of the most recent significant change that was approved. |
| upperBound(optional) | number | The upper limit of the person’s age range. |
| userStatus(optional) | 'VERIFIED' | 'SUPERVISED' | 'SUPERVISED_APPROVAL_PENDING' | 'SUPERVISED_APPROVAL_DENIED' | 'DECLARED' | 'UNKNOWN' | Only for: Android The user's age verification or supervision status. |
错误代码
可在原生模块抛出的任何错误的 code 属性中获取。有关 Android 特定的错误代码,请参见 Play Age Signals API 文档 中的 “Handle API error codes”。
| Code | Platform | Description |
|---|---|---|
ERR_AGE_RANGE_USER_DECLINED | iOS | 用户拒绝共享其年龄范围。 |
ERR_AGE_RANGE_NOT_AVAILABLE | iOS | 年龄范围不可用。最可能的原因是用户未在设备上登录其 Apple 账号。 |
ERR_AGE_RANGE_INVALID_REQUEST | iOS | 所提供的参数无效。年龄范围之间需要至少相隔 2 年。 |