Skip to content

Commit 7662a4f

Browse files
committed
agerange v0.1.0
1 parent 435746a commit 7662a4f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+260
-71
lines changed

docs/agerange/changelog.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
### 2026.01.14 [v0.1.0]
2+
3+
```
4+
feat(amazon): implementation for the amazon app store user age verification sdk
5+
feat: add initialise / isServiceSupported functionality to specify service for use
6+
```
7+
8+
### 2026.01.14 [v0.1.0]
9+
10+
```
11+
feat(amazon): implementation for the amazon app store user age verification sdk
12+
feat: add initialise / isServiceSupported functionality to specify service for use
13+
```
14+
115
### 2025.12.22 [v0.0.4]
216

317
```

docs/agerange/usage.mdx

Lines changed: 107 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,110 @@ import Tabs from '@theme/Tabs'
77
import TabItem from '@theme/TabItem'
88

99

10+
## Selecting the Service
11+
12+
As there are multiple services available on Android you will need to specify the service you wish to use by calling `initialise()` and passing a value defined in the `AgeRangeService`.
13+
14+
For example to specify the Amazon User Age Verification service:
15+
16+
<Tabs
17+
Id="platform"
18+
defaultValue="air"
19+
values={[
20+
{label: 'AIR', value: 'air'},
21+
]}>
22+
23+
<TabItem value="air" >
24+
25+
```actionscript
26+
AgeRange.instance.initialise( AgeRangeService.AMAZON_USER_AGE_VERIFICATION );
27+
```
28+
29+
</TabItem>
30+
<TabItem value="unity" >
31+
32+
```csharp
33+
AgeRange.Instance.Initialise( AgeRangeService.AMAZON_USER_AGE_VERIFICATION );
34+
```
35+
36+
</TabItem>
37+
38+
You should check if the service is supported on the current device first by calling the `isServiceSupported` method:
39+
40+
<Tabs
41+
Id="platform"
42+
defaultValue="air"
43+
values={[
44+
{label: 'AIR', value: 'air'},
45+
]}>
46+
47+
<TabItem value="air" >
48+
49+
```actionscript
50+
if (AgeRange.instance.isServiceSupported( AgeRangeService.AMAZON_USER_AGE_VERIFICATION ))
51+
{
52+
AgeRange.instance.initialise( AgeRangeService.AMAZON_USER_AGE_VERIFICATION );
53+
}
54+
```
55+
56+
</TabItem>
57+
<TabItem value="unity" >
58+
59+
```csharp
60+
if (AgeRange.Instance.IsServiceSupported( AgeRangeService.AMAZON_USER_AGE_VERIFICATION ))
61+
{
62+
AgeRange.Instance.Initialise( AgeRangeService.AMAZON_USER_AGE_VERIFICATION );
63+
}
64+
```
65+
66+
</TabItem>
67+
68+
In this way you can use a service appropriate for the device.
69+
70+
Alternatively you can let the extension select the first available service by using `AgeRangeService.DEFAULT`:
71+
72+
<Tabs
73+
Id="platform"
74+
defaultValue="air"
75+
values={[
76+
{label: 'AIR', value: 'air'},
77+
]}>
78+
79+
<TabItem value="air" >
80+
81+
```actionscript
82+
AgeRange.instance.initialise( AgeRangeService.DEFAULT );
83+
```
84+
85+
</TabItem>
86+
<TabItem value="unity" >
87+
88+
```csharp
89+
AgeRange.Instance.Initialise( AgeRangeService.DEFAULT );
90+
```
91+
92+
</TabItem>
93+
94+
95+
</Tabs>
96+
97+
This will select the first available service in the following order on Android:
98+
99+
- Amazon User Age Verification
100+
- Google Age Signals
101+
102+
Or for iOS:
103+
- Apple Declared Age Range
104+
105+
106+
:::info
107+
This is unused on iOS as there is only one available service there (i.e. Apple's Declared Age Range framework)
108+
109+
If you are solely developing for iOS you can skip the initialise call or you can include it for consistency.
110+
:::
111+
112+
113+
10114
## Requesting an Age Range
11115

12116

@@ -118,7 +222,6 @@ function ageRangeErrorHandler( event:AgeRangeEvent ):void
118222

119223
</TabItem>
120224

121-
122225
</Tabs>
123226

124227

@@ -160,12 +263,12 @@ AgeRange.instance.setFakeAgeRangeResult( fakeResult );
160263

161264
Then when you make an age range request the details in this fake result will be returned.
162265

163-
:::note Android
266+
:::note Google Age Signals
164267
On Android we construct a `FakeAgeSignalsManager` and pass in the parameters from your specified `AgeRangeResult` (as described in the [testing documentation](https://developer.android.com/google/play/age-signals/test-age-signals-api))
165268
:::
166269

167-
:::note iOS
168-
On iOS, there is no method in the Declared Age Range framework to set a test result.
270+
:::note Apple and Amazon
271+
With Apple's Declared Age Range and Amazon's User Age Verification services, there is no method in the service to set a test result.
169272

170273
Instead the specified `AgeRangeResult` will simply be returned in the success callback or event, which means you will not see any UI that would be presented during a normal operation.
171274
:::

static/asdocs/agerange/all-classes.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ <h3><a href="class-summary.html" target="classFrame" style="color:black">All Cla
2828
<tr>
2929
<td><a href="com/distriqt/extension/agerange/AgeRangeResult.html" title="com.distriqt.extension.agerange.AgeRangeResult">AgeRangeResult</a></td>
3030
</tr>
31+
<tr>
32+
<td><a href="com/distriqt/extension/agerange/AgeRangeService.html" title="com.distriqt.extension.agerange.AgeRangeService">AgeRangeService</a></td>
33+
</tr>
3134
<tr>
3235
<td><a href="com/distriqt/extension/agerange/AgeRangeUserStatus.html" title="com.distriqt.extension.agerange.AgeRangeUserStatus">AgeRangeUserStatus</a></td>
3336
</tr>
@@ -37,4 +40,4 @@ <h3><a href="class-summary.html" target="classFrame" style="color:black">All Cla
3740
</table>
3841
</body>
3942
</html>
40-
<!--Copyright Michael Archbold 2025<br/>Mon Dec 22 2025, 11:18 PM +10:00 -->
43+
<!--Copyright Michael Archbold 2025<br/>Wed Jan 14 2026, 12:37 PM +10:00 -->

static/asdocs/agerange/all-index-A.html

Lines changed: 8 additions & 4 deletions
Large diffs are not rendered by default.

static/asdocs/agerange/all-index-B.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010

1111
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("B Index"); titleBar_setSubNav(false,false,false,false,false,false,false,false,false,false,false ,false,false,false,false,false);}
1212
-->
13-
</script><div class="MainContent"><br><table border="0" cellspacing="0" cellpadding="0"><tr><td colspan="2"><a name="B"></a><a href="all-index-A.html" onclick="javascript:loadClassListFrame('index-list.html');">A</a>&nbsp;&nbsp;<font color="black" size="10px" style="bold">B</font>&nbsp;&nbsp;<a href="all-index-C.html" onclick="javascript:loadClassListFrame('index-list.html');">C</a>&nbsp;&nbsp;<a href="all-index-D.html" onclick="javascript:loadClassListFrame('index-list.html');">D</a>&nbsp;&nbsp;<a href="all-index-E.html" onclick="javascript:loadClassListFrame('index-list.html');">E</a>&nbsp;&nbsp;<a href="all-index-F.html" onclick="javascript:loadClassListFrame('index-list.html');">F</a>&nbsp;&nbsp;<a href="all-index-G.html" onclick="javascript:loadClassListFrame('index-list.html');">G</a>&nbsp;&nbsp;<a href="all-index-H.html" onclick="javascript:loadClassListFrame('index-list.html');">H</a>&nbsp;&nbsp;<a href="all-index-I.html" onclick="javascript:loadClassListFrame('index-list.html');">I</a>&nbsp;&nbsp;<a href="all-index-J.html" onclick="javascript:loadClassListFrame('index-list.html');">J</a>&nbsp;&nbsp;<a href="all-index-K.html" onclick="javascript:loadClassListFrame('index-list.html');">K</a>&nbsp;&nbsp;<a href="all-index-L.html" onclick="javascript:loadClassListFrame('index-list.html');">L</a>&nbsp;&nbsp;<a href="all-index-M.html" onclick="javascript:loadClassListFrame('index-list.html');">M</a>&nbsp;&nbsp;<a href="all-index-N.html" onclick="javascript:loadClassListFrame('index-list.html');">N</a>&nbsp;&nbsp;<a href="all-index-O.html" onclick="javascript:loadClassListFrame('index-list.html');">O</a>&nbsp;&nbsp;<a href="all-index-P.html" onclick="javascript:loadClassListFrame('index-list.html');">P</a>&nbsp;&nbsp;<a href="all-index-Q.html" onclick="javascript:loadClassListFrame('index-list.html');">Q</a>&nbsp;&nbsp;<a href="all-index-R.html" onclick="javascript:loadClassListFrame('index-list.html');">R</a>&nbsp;&nbsp;<a href="all-index-S.html" onclick="javascript:loadClassListFrame('index-list.html');">S</a>&nbsp;&nbsp;<a href="all-index-T.html" onclick="javascript:loadClassListFrame('index-list.html');">T</a>&nbsp;&nbsp;<a href="all-index-U.html" onclick="javascript:loadClassListFrame('index-list.html');">U</a>&nbsp;&nbsp;<a href="all-index-V.html" onclick="javascript:loadClassListFrame('index-list.html');">V</a>&nbsp;&nbsp;<a href="all-index-W.html" onclick="javascript:loadClassListFrame('index-list.html');">W</a>&nbsp;&nbsp;<a href="all-index-X.html" onclick="javascript:loadClassListFrame('index-list.html');">X</a>&nbsp;&nbsp;<a href="all-index-Y.html" onclick="javascript:loadClassListFrame('index-list.html');">Y</a>&nbsp;&nbsp;<a href="all-index-Z.html" onclick="javascript:loadClassListFrame('index-list.html');">Z</a>&nbsp;&nbsp;</td></tr><tr><td colspan="2" style="padding-bottom:20px"></td></tr><tr><td colspan="2"><a href="all-index-A.html" onclick="javascript:loadClassListFrame('index-list.html');">A</a>&nbsp;&nbsp;<font color="black" size="10px" style="bold">B</font>&nbsp;&nbsp;<a href="all-index-C.html" onclick="javascript:loadClassListFrame('index-list.html');">C</a>&nbsp;&nbsp;<a href="all-index-D.html" onclick="javascript:loadClassListFrame('index-list.html');">D</a>&nbsp;&nbsp;<a href="all-index-E.html" onclick="javascript:loadClassListFrame('index-list.html');">E</a>&nbsp;&nbsp;<a href="all-index-F.html" onclick="javascript:loadClassListFrame('index-list.html');">F</a>&nbsp;&nbsp;<a href="all-index-G.html" onclick="javascript:loadClassListFrame('index-list.html');">G</a>&nbsp;&nbsp;<a href="all-index-H.html" onclick="javascript:loadClassListFrame('index-list.html');">H</a>&nbsp;&nbsp;<a href="all-index-I.html" onclick="javascript:loadClassListFrame('index-list.html');">I</a>&nbsp;&nbsp;<a href="all-index-J.html" onclick="javascript:loadClassListFrame('index-list.html');">J</a>&nbsp;&nbsp;<a href="all-index-K.html" onclick="javascript:loadClassListFrame('index-list.html');">K</a>&nbsp;&nbsp;<a href="all-index-L.html" onclick="javascript:loadClassListFrame('index-list.html');">L</a>&nbsp;&nbsp;<a href="all-index-M.html" onclick="javascript:loadClassListFrame('index-list.html');">M</a>&nbsp;&nbsp;<a href="all-index-N.html" onclick="javascript:loadClassListFrame('index-list.html');">N</a>&nbsp;&nbsp;<a href="all-index-O.html" onclick="javascript:loadClassListFrame('index-list.html');">O</a>&nbsp;&nbsp;<a href="all-index-P.html" onclick="javascript:loadClassListFrame('index-list.html');">P</a>&nbsp;&nbsp;<a href="all-index-Q.html" onclick="javascript:loadClassListFrame('index-list.html');">Q</a>&nbsp;&nbsp;<a href="all-index-R.html" onclick="javascript:loadClassListFrame('index-list.html');">R</a>&nbsp;&nbsp;<a href="all-index-S.html" onclick="javascript:loadClassListFrame('index-list.html');">S</a>&nbsp;&nbsp;<a href="all-index-T.html" onclick="javascript:loadClassListFrame('index-list.html');">T</a>&nbsp;&nbsp;<a href="all-index-U.html" onclick="javascript:loadClassListFrame('index-list.html');">U</a>&nbsp;&nbsp;<a href="all-index-V.html" onclick="javascript:loadClassListFrame('index-list.html');">V</a>&nbsp;&nbsp;<a href="all-index-W.html" onclick="javascript:loadClassListFrame('index-list.html');">W</a>&nbsp;&nbsp;<a href="all-index-X.html" onclick="javascript:loadClassListFrame('index-list.html');">X</a>&nbsp;&nbsp;<a href="all-index-Y.html" onclick="javascript:loadClassListFrame('index-list.html');">Y</a>&nbsp;&nbsp;<a href="all-index-Z.html" onclick="javascript:loadClassListFrame('index-list.html');">Z</a>&nbsp;&nbsp;</td></tr></table><p></p><center class="copyright"><footer>Copyright <a href="https://michaelarchbold.com" target="_top">Michael Archbold</a> 2025</footer><br/>Mon Dec 22 2025, 11:18 PM +10:00 </center></div></body></html><!--Copyright Michael Archbold 2025<br/>Mon Dec 22 2025, 11:18 PM +10:00 -->
13+
</script><div class="MainContent"><br><table border="0" cellspacing="0" cellpadding="0"><tr><td colspan="2"><a name="B"></a><a href="all-index-A.html" onclick="javascript:loadClassListFrame('index-list.html');">A</a>&nbsp;&nbsp;<font color="black" size="10px" style="bold">B</font>&nbsp;&nbsp;<a href="all-index-C.html" onclick="javascript:loadClassListFrame('index-list.html');">C</a>&nbsp;&nbsp;<a href="all-index-D.html" onclick="javascript:loadClassListFrame('index-list.html');">D</a>&nbsp;&nbsp;<a href="all-index-E.html" onclick="javascript:loadClassListFrame('index-list.html');">E</a>&nbsp;&nbsp;<a href="all-index-F.html" onclick="javascript:loadClassListFrame('index-list.html');">F</a>&nbsp;&nbsp;<a href="all-index-G.html" onclick="javascript:loadClassListFrame('index-list.html');">G</a>&nbsp;&nbsp;<a href="all-index-H.html" onclick="javascript:loadClassListFrame('index-list.html');">H</a>&nbsp;&nbsp;<a href="all-index-I.html" onclick="javascript:loadClassListFrame('index-list.html');">I</a>&nbsp;&nbsp;<a href="all-index-J.html" onclick="javascript:loadClassListFrame('index-list.html');">J</a>&nbsp;&nbsp;<a href="all-index-K.html" onclick="javascript:loadClassListFrame('index-list.html');">K</a>&nbsp;&nbsp;<a href="all-index-L.html" onclick="javascript:loadClassListFrame('index-list.html');">L</a>&nbsp;&nbsp;<a href="all-index-M.html" onclick="javascript:loadClassListFrame('index-list.html');">M</a>&nbsp;&nbsp;<a href="all-index-N.html" onclick="javascript:loadClassListFrame('index-list.html');">N</a>&nbsp;&nbsp;<a href="all-index-O.html" onclick="javascript:loadClassListFrame('index-list.html');">O</a>&nbsp;&nbsp;<a href="all-index-P.html" onclick="javascript:loadClassListFrame('index-list.html');">P</a>&nbsp;&nbsp;<a href="all-index-Q.html" onclick="javascript:loadClassListFrame('index-list.html');">Q</a>&nbsp;&nbsp;<a href="all-index-R.html" onclick="javascript:loadClassListFrame('index-list.html');">R</a>&nbsp;&nbsp;<a href="all-index-S.html" onclick="javascript:loadClassListFrame('index-list.html');">S</a>&nbsp;&nbsp;<a href="all-index-T.html" onclick="javascript:loadClassListFrame('index-list.html');">T</a>&nbsp;&nbsp;<a href="all-index-U.html" onclick="javascript:loadClassListFrame('index-list.html');">U</a>&nbsp;&nbsp;<a href="all-index-V.html" onclick="javascript:loadClassListFrame('index-list.html');">V</a>&nbsp;&nbsp;<a href="all-index-W.html" onclick="javascript:loadClassListFrame('index-list.html');">W</a>&nbsp;&nbsp;<a href="all-index-X.html" onclick="javascript:loadClassListFrame('index-list.html');">X</a>&nbsp;&nbsp;<a href="all-index-Y.html" onclick="javascript:loadClassListFrame('index-list.html');">Y</a>&nbsp;&nbsp;<a href="all-index-Z.html" onclick="javascript:loadClassListFrame('index-list.html');">Z</a>&nbsp;&nbsp;</td></tr><tr><td colspan="2" style="padding-bottom:20px"></td></tr><tr><td colspan="2"><a href="all-index-A.html" onclick="javascript:loadClassListFrame('index-list.html');">A</a>&nbsp;&nbsp;<font color="black" size="10px" style="bold">B</font>&nbsp;&nbsp;<a href="all-index-C.html" onclick="javascript:loadClassListFrame('index-list.html');">C</a>&nbsp;&nbsp;<a href="all-index-D.html" onclick="javascript:loadClassListFrame('index-list.html');">D</a>&nbsp;&nbsp;<a href="all-index-E.html" onclick="javascript:loadClassListFrame('index-list.html');">E</a>&nbsp;&nbsp;<a href="all-index-F.html" onclick="javascript:loadClassListFrame('index-list.html');">F</a>&nbsp;&nbsp;<a href="all-index-G.html" onclick="javascript:loadClassListFrame('index-list.html');">G</a>&nbsp;&nbsp;<a href="all-index-H.html" onclick="javascript:loadClassListFrame('index-list.html');">H</a>&nbsp;&nbsp;<a href="all-index-I.html" onclick="javascript:loadClassListFrame('index-list.html');">I</a>&nbsp;&nbsp;<a href="all-index-J.html" onclick="javascript:loadClassListFrame('index-list.html');">J</a>&nbsp;&nbsp;<a href="all-index-K.html" onclick="javascript:loadClassListFrame('index-list.html');">K</a>&nbsp;&nbsp;<a href="all-index-L.html" onclick="javascript:loadClassListFrame('index-list.html');">L</a>&nbsp;&nbsp;<a href="all-index-M.html" onclick="javascript:loadClassListFrame('index-list.html');">M</a>&nbsp;&nbsp;<a href="all-index-N.html" onclick="javascript:loadClassListFrame('index-list.html');">N</a>&nbsp;&nbsp;<a href="all-index-O.html" onclick="javascript:loadClassListFrame('index-list.html');">O</a>&nbsp;&nbsp;<a href="all-index-P.html" onclick="javascript:loadClassListFrame('index-list.html');">P</a>&nbsp;&nbsp;<a href="all-index-Q.html" onclick="javascript:loadClassListFrame('index-list.html');">Q</a>&nbsp;&nbsp;<a href="all-index-R.html" onclick="javascript:loadClassListFrame('index-list.html');">R</a>&nbsp;&nbsp;<a href="all-index-S.html" onclick="javascript:loadClassListFrame('index-list.html');">S</a>&nbsp;&nbsp;<a href="all-index-T.html" onclick="javascript:loadClassListFrame('index-list.html');">T</a>&nbsp;&nbsp;<a href="all-index-U.html" onclick="javascript:loadClassListFrame('index-list.html');">U</a>&nbsp;&nbsp;<a href="all-index-V.html" onclick="javascript:loadClassListFrame('index-list.html');">V</a>&nbsp;&nbsp;<a href="all-index-W.html" onclick="javascript:loadClassListFrame('index-list.html');">W</a>&nbsp;&nbsp;<a href="all-index-X.html" onclick="javascript:loadClassListFrame('index-list.html');">X</a>&nbsp;&nbsp;<a href="all-index-Y.html" onclick="javascript:loadClassListFrame('index-list.html');">Y</a>&nbsp;&nbsp;<a href="all-index-Z.html" onclick="javascript:loadClassListFrame('index-list.html');">Z</a>&nbsp;&nbsp;</td></tr></table><p></p><center class="copyright"><footer>Copyright <a href="https://michaelarchbold.com" target="_top">Michael Archbold</a> 2025</footer><br/>Wed Jan 14 2026, 12:37 PM +10:00 </center></div></body></html><!--Copyright Michael Archbold 2025<br/>Wed Jan 14 2026, 12:37 PM +10:00 -->

0 commit comments

Comments
 (0)