Skip to content

Commit 187c50b

Browse files
Add binding for com.google.android.play:age-signals:0.0.1-beta02 (#1305)
Adds .NET binding for Google Play's Age Signals API, which enables apps to verify user age information for parental control and compliance purposes. ## Changes - **config.json**: Added `com.google.android.play:age-signals:0.0.1-beta02` artifact entry with NuGet package ID `Xamarin.Google.Android.Play.Age.Signals` - **PublicAPI files**: Generated API surface with 93 members including: - `AgeSignalsManagerFactory` for creating manager instances - `AgeSignalsRequest`/`AgeSignalsResult` builder pattern types - `IAgeSignalsManager.CheckAgeSignals()` for age verification - Error codes and verification status enums - `FakeAgeSignalsManager` for testing - **Metadata.xml**: Added namespace transformations to use proper camel case (`AgeSignals` instead of `Agesignals`) for all four namespaces - **Component governance**: Updated `cgmanifest.json` with Play Core SDK licensing - **Documentation**: Updated artifact lists and namespace registry ## API Usage ```csharp using Google.Android.Play.AgeSignals; var manager = AgeSignalsManagerFactory.Create(context); var request = AgeSignalsRequest.InvokeBuilder().Build(); var task = manager.CheckAgeSignals(request); ``` Fixes #31974 (context: dotnet/maui#31974) Co-authored-by: Jonathan Peppers <[email protected]>
1 parent 97a7c0d commit 187c50b

File tree

8 files changed

+575
-446
lines changed

8 files changed

+575
-446
lines changed

cgmanifest.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5758,6 +5758,19 @@
57585758
},
57595759
"license": "Android Software Development Kit License"
57605760
},
5761+
{
5762+
"component": {
5763+
"type": "maven",
5764+
"maven": {
5765+
"artifactId": "age-signals",
5766+
"groupId": "com.google.android.play",
5767+
"version": "0.0.1-beta02",
5768+
"nuGetId": "Xamarin.Google.Android.Play.Age.Signals",
5769+
"nuGetVersion": "0.0.1-beta02"
5770+
}
5771+
},
5772+
"license": "Play Core Software Development Kit Terms of Service"
5773+
},
57615774
{
57625775
"component": {
57635776
"type": "maven",

config.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3302,6 +3302,14 @@
33023302
"nugetId": "Xamarin.Google.Android.ODML.Image",
33033303
"type": "xbd"
33043304
},
3305+
{
3306+
"groupId": "com.google.android.play",
3307+
"artifactId": "age-signals",
3308+
"version": "0.0.1-beta02",
3309+
"nugetVersion": "0.0.1-beta02",
3310+
"nugetId": "Xamarin.Google.Android.Play.Age.Signals",
3311+
"type": "xbd"
3312+
},
33053313
{
33063314
"groupId": "com.google.android.play",
33073315
"artifactId": "ai-delivery",

docs/artifact-list-with-versions.md

Lines changed: 224 additions & 223 deletions
Large diffs are not rendered by default.

docs/artifact-list.md

Lines changed: 224 additions & 223 deletions
Large diffs are not rendered by default.

published-namespaces.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,10 @@ Google.Android.Material.Tooltip
11061106
Google.Android.Material.Transformation
11071107
Google.Android.Material.Transition
11081108
Google.Android.Material.Transition.Platform
1109+
Google.Android.Play.AgeSignals
1110+
Google.Android.Play.AgeSignals.Model
1111+
Google.Android.Play.AgeSignals.Protocol
1112+
Google.Android.Play.AgeSignals.Testing
11091113
Google.Android.Play.Core.AiPacks
11101114
Google.Android.Play.Core.AiPacks.Model
11111115
Google.AndroidLibraries.BarHopper
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#nullable enable
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#nullable enable
2+
Google.Android.Play.AgeSignals.AgeSignalsException
3+
Google.Android.Play.AgeSignals.AgeSignalsException.AgeSignalsException(Android.Gms.Common.Apis.Statuses! status) -> void
4+
Google.Android.Play.AgeSignals.AgeSignalsException.AgeSignalsException(int errorCode) -> void
5+
Google.Android.Play.AgeSignals.AgeSignalsException.AgeSignalsException(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
6+
Google.Android.Play.AgeSignals.AgeSignalsManagerFactory
7+
Google.Android.Play.AgeSignals.AgeSignalsManagerFactory.AgeSignalsManagerFactory(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
8+
Google.Android.Play.AgeSignals.AgeSignalsRequest
9+
Google.Android.Play.AgeSignals.AgeSignalsRequest.AgeSignalsRequest(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
10+
Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder
11+
Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder.Builder(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
12+
Google.Android.Play.AgeSignals.AgeSignalsResult
13+
Google.Android.Play.AgeSignals.AgeSignalsResult.AgeSignalsResult() -> void
14+
Google.Android.Play.AgeSignals.AgeSignalsResult.AgeSignalsResult(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
15+
Google.Android.Play.AgeSignals.AgeSignalsResult.Builder
16+
Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.Builder() -> void
17+
Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.Builder(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
18+
Google.Android.Play.AgeSignals.IAgeSignalsManager
19+
Google.Android.Play.AgeSignals.IAgeSignalsManager.CheckAgeSignals(Google.Android.Play.AgeSignals.AgeSignalsRequest! p0) -> Android.Gms.Tasks.Task!
20+
Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode
21+
Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCodeAttribute
22+
Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCodeAttribute.AgeSignalsErrorCodeAttribute() -> void
23+
Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCodeConsts
24+
Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus
25+
Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatusAttribute
26+
Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatusAttribute.AgeSignalsVerificationStatusAttribute() -> void
27+
Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatusConsts
28+
Google.Android.Play.AgeSignals.Model.IAgeSignalsErrorCode
29+
Google.Android.Play.AgeSignals.Model.IAgeSignalsVerificationStatus
30+
Google.Android.Play.AgeSignals.Protocol.IAgeSignalsService
31+
Google.Android.Play.AgeSignals.Protocol.IAgeSignalsService.CheckAgeRange(string! p0, Android.OS.Bundle! p1, Google.Android.Play.AgeSignals.Protocol.IAgeSignalsServiceCallback! p2) -> void
32+
Google.Android.Play.AgeSignals.Protocol.IAgeSignalsServiceCallback
33+
Google.Android.Play.AgeSignals.Protocol.IAgeSignalsServiceCallback.OnCompleteCheckAgeSignals(Android.OS.Bundle! p0) -> void
34+
Google.Android.Play.AgeSignals.Protocol.IAgeSignalsServiceCallback.OnError(Android.OS.Bundle! p0) -> void
35+
Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager
36+
Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.FakeAgeSignalsManager() -> void
37+
Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.FakeAgeSignalsManager(nint javaReference, Android.Runtime.JniHandleOwnership transfer) -> void
38+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.AgeLower() -> Java.Lang.Integer?
39+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.AgeUpper() -> Java.Lang.Integer?
40+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.Build() -> Google.Android.Play.AgeSignals.AgeSignalsResult!
41+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.SetAgeLower(Java.Lang.Integer? p0) -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
42+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.SetAgeUpper(Java.Lang.Integer? p0) -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
43+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.SetInstallId(string? p0) -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
44+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.SetMostRecentApprovalDate(Java.Util.Date? p0) -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
45+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.SetUserStatus(Java.Lang.Integer? p0) -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
46+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.InstallId() -> string?
47+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.MostRecentApprovalDate() -> Java.Util.Date?
48+
abstract Google.Android.Play.AgeSignals.AgeSignalsResult.UserStatus() -> Java.Lang.Integer?
49+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.ApiNotAvailable = -1 -> int
50+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.AppNotOwned = -9 -> int
51+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.CannotBindToService = -5 -> int
52+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.ClientTransientError = -8 -> int
53+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.InternalError = -100 -> int
54+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.NetworkError = -3 -> int
55+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.NoError = 0 -> int
56+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.PlayServicesNotFound = -4 -> int
57+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.PlayServicesVersionOutdated = -7 -> int
58+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.PlayStoreNotFound = -2 -> int
59+
const Google.Android.Play.AgeSignals.Model.AgeSignalsErrorCode.PlayStoreVersionOutdated = -6 -> int
60+
const Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus.Supervised = 1 -> int
61+
const Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus.SupervisedApprovalDenied = 3 -> int
62+
const Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus.SupervisedApprovalPending = 2 -> int
63+
const Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus.Unknown = 4 -> int
64+
const Google.Android.Play.AgeSignals.Model.AgeSignalsVerificationStatus.Verified = 0 -> int
65+
override Google.Android.Play.AgeSignals.AgeSignalsException.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
66+
override Google.Android.Play.AgeSignals.AgeSignalsException.ThresholdClass.get -> nint
67+
override Google.Android.Play.AgeSignals.AgeSignalsException.ThresholdType.get -> System.Type!
68+
override Google.Android.Play.AgeSignals.AgeSignalsManagerFactory.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
69+
override Google.Android.Play.AgeSignals.AgeSignalsManagerFactory.ThresholdClass.get -> nint
70+
override Google.Android.Play.AgeSignals.AgeSignalsManagerFactory.ThresholdType.get -> System.Type!
71+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
72+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder.ThresholdClass.get -> nint
73+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder.ThresholdType.get -> System.Type!
74+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
75+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.ThresholdClass.get -> nint
76+
override Google.Android.Play.AgeSignals.AgeSignalsRequest.ThresholdType.get -> System.Type!
77+
override Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
78+
override Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.ThresholdClass.get -> nint
79+
override Google.Android.Play.AgeSignals.AgeSignalsResult.Builder.ThresholdType.get -> System.Type!
80+
override Google.Android.Play.AgeSignals.AgeSignalsResult.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
81+
override Google.Android.Play.AgeSignals.AgeSignalsResult.ThresholdClass.get -> nint
82+
override Google.Android.Play.AgeSignals.AgeSignalsResult.ThresholdType.get -> System.Type!
83+
override Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.JniPeerMembers.get -> Java.Interop.JniPeerMembers!
84+
override Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.ThresholdClass.get -> nint
85+
override Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.ThresholdType.get -> System.Type!
86+
static Google.Android.Play.AgeSignals.AgeSignalsManagerFactory.Create(Android.Content.Context! context) -> Google.Android.Play.AgeSignals.IAgeSignalsManager!
87+
static Google.Android.Play.AgeSignals.AgeSignalsRequest.InvokeBuilder() -> Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder!
88+
static Google.Android.Play.AgeSignals.AgeSignalsResult.InvokeBuilder() -> Google.Android.Play.AgeSignals.AgeSignalsResult.Builder!
89+
virtual Google.Android.Play.AgeSignals.AgeSignalsException.ErrorCode.get -> int
90+
virtual Google.Android.Play.AgeSignals.AgeSignalsRequest.Builder.Build() -> Google.Android.Play.AgeSignals.AgeSignalsRequest!
91+
virtual Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.CheckAgeSignals(Google.Android.Play.AgeSignals.AgeSignalsRequest! p0) -> Android.Gms.Tasks.Task!
92+
virtual Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.SetNextAgeSignalsException(Google.Android.Play.AgeSignals.AgeSignalsException! exception) -> void
93+
virtual Google.Android.Play.AgeSignals.Testing.FakeAgeSignalsManager.SetNextAgeSignalsResult(Google.Android.Play.AgeSignals.AgeSignalsResult! result) -> void
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<metadata>
3+
<!-- Transform package name from 'agesignals' to 'AgeSignals' (proper camel case) -->
4+
<attr path="/api/package[@name='com.google.android.play.agesignals']" name="managedName">Google.Android.Play.AgeSignals</attr>
5+
<attr path="/api/package[@name='com.google.android.play.agesignals.model']" name="managedName">Google.Android.Play.AgeSignals.Model</attr>
6+
<attr path="/api/package[@name='com.google.android.play.agesignals.protocol']" name="managedName">Google.Android.Play.AgeSignals.Protocol</attr>
7+
<attr path="/api/package[@name='com.google.android.play.agesignals.testing']" name="managedName">Google.Android.Play.AgeSignals.Testing</attr>
8+
</metadata>

0 commit comments

Comments
 (0)