-
Notifications
You must be signed in to change notification settings - Fork 584
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add custom signals support in Remote Config. #6539
base: main
Are you sure you want to change the base?
Conversation
Reflects expanded functionality to store both metadata and custom signals in shared preferences.
Javadoc Changes:--- /home/runner/diff/original/firebase-kotlindoc/android/client/firebase-config/_toc.yaml 2024-12-19 07:41:08.636713142 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/client/firebase-config/_toc.yaml 2024-12-19 07:38:07.377132386 +0000
@@ -20,6 +20,10 @@
section:
- title: "ConfigUpdate"
path: "/docs/reference/android/com/google/firebase/remoteconfig/ConfigUpdate.html"
+ - title: "CustomSignals"
+ path: "/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html"
+ - title: "CustomSignals.Builder"
+ path: "/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html"
- title: "FirebaseRemoteConfig"
path: "/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html"
- title: "FirebaseRemoteConfigSettings" --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html 2024-12-19 07:38:07.379132377 +0000
@@ -0,0 +1,276 @@
+<html devsite="true">
+ <head>
+ <title>CustomSignals.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>CustomSignals.Builder</h1>
+ <p>
+ <pre>public class <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></pre>
+ </p>
+ <hr>
+ <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public constructors</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#Builder()">Builder</a>()</code></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public methods</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#build()">build</a>()</code></div>
+ <p>Creates a <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance with the added custom signals.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,java.lang.String)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> value)</code></div>
+ <p>Adds a custom signal with a value that can be a string or null to the builder.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,long)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, long value)</code></div>
+ <p>Adds a custom signal with a long value to the builder.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,double)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, double value)</code></div>
+ <p>Adds a custom signal with a double value to the builder.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="list">
+ <h2>Public constructors</h2>
+ <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+ <h3 class="api-name" id="Builder()">Builder</h3>
+ <pre class="api-signature no-pretty-print">public <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#Builder()">Builder</a>()</pre>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public methods</h2>
+ <div class="api-item"><a name="build--"></a><a name="build"></a>
+ <h3 class="api-name" id="build()">build</h3>
+ <pre class="api-signature no-pretty-print">public @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#build()">build</a>()</pre>
+ <p>Creates a <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance with the added custom signals.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <p>The constructed <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, java.lang.String)"></a><a name="put-java.lang.String-java.lang.String-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,java.lang.String)">put</h3>
+ <pre class="api-signature no-pretty-print">public @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,java.lang.String)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> value)</pre>
+ <p>Adds a custom signal with a value that can be a string or null to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key</code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/Nullable.html">Nullable</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> value</code></td>
+ <td>
+ <p>The string value associated with the key. Can be null.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, long)"></a><a name="put-java.lang.String-long-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,long)">put</h3>
+ <pre class="api-signature no-pretty-print">public @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,long)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, long value)</pre>
+ <p>Adds a custom signal with a long value to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key</code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>long value</code></td>
+ <td>
+ <p>The long value for the custom signal.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, double)"></a><a name="put-java.lang.String-double-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,double)">put</h3>
+ <pre class="api-signature no-pretty-print">public @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,double)">put</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key, double value)</pre>
+ <p>Adds a custom signal with a double value to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key</code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>double value</code></td>
+ <td>
+ <p>The double value for the custom signal.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/remoteconfig/CustomSignals.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/remoteconfig/CustomSignals.html 2024-12-19 07:38:07.378132382 +0000
@@ -0,0 +1,39 @@
+<html devsite="true">
+ <head>
+ <title>CustomSignals</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>CustomSignals</h1>
+ <p>
+ <pre>public class <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></pre>
+ </p>
+ <hr>
+ <p>A container type to represent key/value pairs of heterogeneous types to be set as custom signals in <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a></code>.</p>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Nested types</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code>public class <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></div>
+ <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html 2024-12-19 07:41:08.637713127 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html 2024-12-19 07:38:07.378132382 +0000
@@ -254,6 +254,13 @@
<tr>
<td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>></code></td>
<td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a> customSignals)</code></div>
+ <p>Asynchronously changes the custom signals for this <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code> instance.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>></code></td>
+ <td>
<div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setDefaultsAsync(java.util.Map<java.lang.String,java.lang.Object>)">setDefaultsAsync</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a><<a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a>, <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> defaults)</code></div>
<p>Asynchronously sets default configs using the given <code><a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a></code>.</p>
</td>
@@ -973,6 +980,38 @@
</td>
</tr>
</tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="setCustomSignals-com.google.firebase.remoteconfig.CustomSignals-"></a><a name="setcustomsignals"></a>
+ <h3 class="api-name" id="setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</h3>
+ <pre class="api-signature no-pretty-print">public @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>> <a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a> customSignals)</pre>
+ <p>Asynchronously changes the custom signals for this <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code> instance. </p>
+ <p>Custom signals are subject to limits on the size of key/value pairs and the total number of signals. Any calls that exceed these limits will be discarded.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a> customSignals</code></td>
+ <td>
+ <p>The custom signals to set for this instance. </p>
+ <ol>
+ <li>New keys will add new key-value pairs in the custom signals. </li>
+ <li>Existing keys with new values will update the corresponding signals. </li>
+ <li>Setting a key's value to <code>null</code> will remove the associated signal. </li>
+ </ol>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
</div> --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/remoteconfig/RemoteConfigKt.html 2024-12-19 07:41:08.638713112 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/remoteconfig/RemoteConfigKt.html 2024-12-19 07:38:07.380132373 +0000
@@ -53,6 +53,12 @@
</thead>
<tbody class="list">
<tr>
+ <td><code>static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html#customSignals(kotlin.Function1)">customSignals</a>(<br> @<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html">ExtensionFunctionType</a> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> builder<br>)</code></div>
+ </td>
+ </tr>
+ <tr>
<td><code>static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigValue.html">FirebaseRemoteConfigValue</a></code></td>
<td>
<div><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html">RemoteConfigKt</a>.<a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html#(com.google.firebase.remoteconfig.FirebaseRemoteConfig).get(kotlin.String)">get</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a> receiver,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key<br>)</code></div>
@@ -98,6 +104,10 @@
</div>
<div class="list">
<h2>Public methods</h2>
+ <div class="api-item"><a name="customSignals-kotlin.Function1-"></a><a name="customsignals"></a>
+ <h3 class="api-name" id="customSignals(kotlin.Function1)">customSignals</h3>
+ <pre class="api-signature no-pretty-print">public static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html#customSignals(kotlin.Function1)">customSignals</a>(<br> @<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html">ExtensionFunctionType</a> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> builder<br>)</pre>
+ </div>
<div class="api-item"><a name="-com.google.firebase.remoteconfig.FirebaseRemoteConfig-.get-kotlin.String-"></a><a name="get"></a>
<h3 class="api-name" id="(com.google.firebase.remoteconfig.FirebaseRemoteConfig).get(kotlin.String)">RemoteConfigKt.get</h3>
<pre class="api-signature no-pretty-print">public static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigValue.html">FirebaseRemoteConfigValue</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html">RemoteConfigKt</a>.<a href="/docs/reference/android/com/google/firebase/remoteconfig/RemoteConfigKt.html#(com.google.firebase.remoteconfig.FirebaseRemoteConfig).get(kotlin.String)">get</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a> receiver,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> key<br>)</pre> --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/remoteconfig/package-summary.html 2024-12-19 07:41:08.638713112 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/remoteconfig/package-summary.html 2024-12-19 07:38:07.380132373 +0000
@@ -56,6 +56,18 @@
</td>
</tr>
<tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <p>A container type to represent key/value pairs of heterogeneous types to be set as custom signals in <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a></code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>Builder for constructing <code><a href="/docs/reference/android/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ </td>
+ </tr>
+ <tr>
<td><code><a href="/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code></td>
<td>
<p>Entry point for the Firebase Remote Config API.</p> --- /home/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-config/_toc.yaml 2024-12-19 07:41:08.639713097 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-config/_toc.yaml 2024-12-19 07:38:07.382132363 +0000
@@ -20,6 +20,10 @@
section:
- title: "ConfigUpdate"
path: "/docs/reference/kotlin/com/google/firebase/remoteconfig/ConfigUpdate.html"
+ - title: "CustomSignals"
+ path: "/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html"
+ - title: "CustomSignals.Builder"
+ path: "/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html"
- title: "FirebaseRemoteConfig"
path: "/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html"
- title: "FirebaseRemoteConfigSettings" --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html 2024-12-19 07:38:07.383132359 +0000
@@ -0,0 +1,276 @@
+<html devsite="true">
+ <head>
+ <title>CustomSignals.Builder</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>CustomSignals.Builder</h1>
+ <p>
+ <pre>class <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></pre>
+ </p>
+ <hr>
+ <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public constructors</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#Builder()">Builder</a>()</code></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public functions</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#build()">build</a>()</code></div>
+ <p>Creates a <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance with the added custom signals.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,java.lang.String)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?)</code></div>
+ <p>Adds a custom signal with a value that can be a string or null to the builder.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,long)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html">Long</a>)</code></div>
+ <p>Adds a custom signal with a long value to the builder.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,double)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/index.html">Double</a>)</code></div>
+ <p>Adds a custom signal with a double value to the builder.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="list">
+ <h2>Public constructors</h2>
+ <div class="api-item"><a name="Builder--"></a><a name="builder"></a>
+ <h3 class="api-name" id="Builder()">Builder</h3>
+ <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#Builder()">Builder</a>()</pre>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public functions</h2>
+ <div class="api-item"><a name="build--"></a><a name="build"></a>
+ <h3 class="api-name" id="build()">build</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#build()">build</a>(): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></pre>
+ <p>Creates a <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance with the added custom signals.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <p>The constructed <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instance.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, java.lang.String)"></a><a name="put-java.lang.String-java.lang.String-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,java.lang.String)">put</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,java.lang.String)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></pre>
+ <p>Adds a custom signal with a value that can be a string or null to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>?</code></td>
+ <td>
+ <p>The string value associated with the key. Can be null.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, long)"></a><a name="put-java.lang.String-long-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,long)">put</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,long)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html">Long</a>): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></pre>
+ <p>Adds a custom signal with a long value to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-long/index.html">Long</a></code></td>
+ <td>
+ <p>The long value for the custom signal.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="put(java.lang.String, double)"></a><a name="put-java.lang.String-double-"></a><a name="put"></a>
+ <h3 class="api-name" id="put(java.lang.String,double)">put</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html#put(java.lang.String,double)">put</a>(key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>, value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/index.html">Double</a>): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></pre>
+ <p>Adds a custom signal with a double value to the builder.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
+ <td>
+ <p>The key for the custom signal.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>value: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-double/index.html">Double</a></code></td>
+ <td>
+ <p>The double value for the custom signal.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>This Builder instance to allow chaining of method calls.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/CustomSignals.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/CustomSignals.html 2024-12-19 07:38:07.382132363 +0000
@@ -0,0 +1,39 @@
+<html devsite="true">
+ <head>
+ <title>CustomSignals</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>CustomSignals</h1>
+ <p>
+ <pre>class <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></pre>
+ </p>
+ <hr>
+ <p>A container type to represent key/value pairs of heterogeneous types to be set as custom signals in <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a></code>.</p>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Nested types</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code>class <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></div>
+ <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html 2024-12-19 07:41:08.644713023 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html 2024-12-19 07:38:07.383132359 +0000
@@ -254,6 +254,13 @@
<tr>
<td><code><a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>!></code></td>
<td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a>(customSignals: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a>)</code></div>
+ <p>Asynchronously changes the custom signals for this <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code> instance.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>!></code></td>
+ <td>
<div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setDefaultsAsync(java.util.Map<java.lang.String,java.lang.Object>)">setDefaultsAsync</a>(defaults: (<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-map/index.html">Mutable</a>)<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a><<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>!, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>!>)</code></div>
<p>Asynchronously sets default configs using the given <code><a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a></code>.</p>
</td>
@@ -990,6 +997,38 @@
</td>
</tr>
</tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="setCustomSignals-com.google.firebase.remoteconfig.CustomSignals-"></a><a name="setcustomsignals"></a>
+ <h3 class="api-name" id="setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a>(customSignals: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a>): <a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task.html">Task</a><<a href="https://developer.android.com/reference/kotlin/java/lang/Void.html">Void</a>!></pre>
+ <p>Asynchronously changes the custom signals for this <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code> instance. </p>
+ <p>Custom signals are subject to limits on the size of key/value pairs and the total number of signals. Any calls that exceed these limits will be discarded.</p>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>customSignals: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <p>The custom signals to set for this instance. </p>
+ <ol>
+ <li>New keys will add new key-value pairs in the custom signals. </li>
+ <li>Existing keys with new values will update the corresponding signals. </li>
+ <li>Setting a key's value to <code>null</code> will remove the associated signal. </li>
+ </ol>
+ </td>
+ </tr>
+ </tbody>
</table>
</div>
</div> --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/package-summary.html 2024-12-19 07:41:08.645713009 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/remoteconfig/package-summary.html 2024-12-19 07:38:07.384132354 +0000
@@ -56,6 +56,18 @@
</td>
</tr>
<tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <p>A container type to represent key/value pairs of heterogeneous types to be set as custom signals in <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#setCustomSignals(com.google.firebase.remoteconfig.CustomSignals)">setCustomSignals</a></code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a></code></td>
+ <td>
+ <p>Builder for constructing <code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code> instances.</p>
+ </td>
+ </tr>
+ <tr>
<td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html">FirebaseRemoteConfig</a></code></td>
<td>
<p>Entry point for the Firebase Remote Config API.</p>
@@ -135,6 +147,12 @@
</colgroup>
<tbody class="list">
<tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/package-summary.html#customSignals(kotlin.Function1)">customSignals</a>(builder: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a>.() <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>)</code></div>
+ </td>
+ </tr>
+ <tr>
<td><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.html">FirebaseRemoteConfigSettings</a></code></td>
<td>
<div><code><a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/package-summary.html#remoteConfigSettings(kotlin.Function1)">remoteConfigSettings</a>(init: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder.html">FirebaseRemoteConfigSettings.Builder</a>.() <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>)</code></div>
@@ -194,6 +212,10 @@
</table>
</div>
<h2>Top-level functions</h2>
+ <div class="api-item"><a name="customSignals-kotlin.Function1-"></a><a name="customsignals"></a>
+ <h3 class="api-name" id="customSignals(kotlin.Function1)">customSignals</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/package-summary.html#customSignals(kotlin.Function1)">customSignals</a>(builder: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.Builder.html">CustomSignals.Builder</a>.() <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/CustomSignals.html">CustomSignals</a></pre>
+ </div>
<div class="api-item"><a name="remoteConfigSettings-kotlin.Function1-"></a><a name="remoteconfigsettings"></a>
<h3 class="api-name" id="remoteConfigSettings(kotlin.Function1)">remoteConfigSettings</h3>
<pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/package-summary.html#remoteConfigSettings(kotlin.Function1)">remoteConfigSettings</a>(init: <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder.html">FirebaseRemoteConfigSettings.Builder</a>.() <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>): <a href="/docs/reference/kotlin/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.html">FirebaseRemoteConfigSettings</a></pre> |
Vertex AI Mock Responses Check
|
Generated by 🚫 Danger |
Coverage Report 1Affected Products
Test Logs |
Test Results 42 files - 994 42 suites - 994 1m 17s ⏱️ - 33m 8s Results for commit d0f4d2f. ± Comparison against base commit 2b072d9. This pull request removes 5591 and adds 40 tests. Note that renamed tests count towards both.
♻️ This comment has been updated with latest results. |
Size Report 1Affected Products
Test Logs |
feat(rc): Add custom signals support and methods to set custom signals for Remote Config Custom targeting
When we update custom signals using setCustomSignals, the latest custom signals are not retrieved in the subsequent fetch. Currently, we are required to reload the app to fetch them. Link to the bug: [Fetch uses stale custom signal values](https://b.corp.google.com/issues/381353888)
firebase-config/ktx/src/test/kotlin/com/google/firebase/remoteconfig/TestConstructorUtil.kt
Show resolved
Hide resolved
firebase-config/src/main/java/com/google/firebase/remoteconfig/FirebaseRemoteConfig.java
Outdated
Show resolved
Hide resolved
firebase-config/src/main/java/com/google/firebase/remoteconfig/CustomSignals.java
Show resolved
Hide resolved
firebase-config/src/main/java/com/google/firebase/remoteconfig/CustomSignals.java
Outdated
Show resolved
Hide resolved
firebase-config/src/main/java/com/google/firebase/remoteconfig/CustomSignals.java
Outdated
Show resolved
Hide resolved
firebase-config/src/main/java/com/google/firebase/remoteconfig/CustomSignals.java
Show resolved
Hide resolved
requestBodyMap.put(CUSTOM_SIGNALS, new JSONObject(customSignalsMap)); | ||
|
||
// Log the custom signals during fetch. | ||
Log.d(TAG, "Fetching with custom signals: " + customSignalsMap); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could the custom signals include any information that shouldn't be logged? See https://developer.android.com/privacy-and-security/risks/log-info-disclosure
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We are adding debug logs here, does logging at the debug level sufficiently mitigate the risk of exposing sensitive data? We are planning to explicitly advise against including sensitive information within custom signals in our public documentation. Do you think this approach adequately addresses the potential concerns?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See b/381813034 for context
Out of an abundance of caution, you could potentially only log the keys of the signal map. If you still think it's important and safe to log the map, please add notes in the CustomSignal
methods that create new signals that reinforce the need to not include any sensitive data in the signals.
...-config/src/main/java/com/google/firebase/remoteconfig/internal/ConfigSharedPrefsClient.java
Show resolved
Hide resolved
firebase-config/src/test/java/com/google/firebase/remoteconfig/CustomSignalsTest.java
Show resolved
Hide resolved
firebase-config/src/test/java/com/google/firebase/remoteconfig/CustomSignalsTest.java
Outdated
Show resolved
Hide resolved
firebase-config/src/test/java/com/google/firebase/remoteconfig/FirebaseRemoteConfigTest.java
Show resolved
Hide resolved
firebase-config/src/test/java/com/google/firebase/remoteconfig/RemoteConfigTests.kt
Show resolved
Hide resolved
firebase-config/src/test/java/com/google/firebase/remoteconfig/RemoteConfigTests.kt
Outdated
Show resolved
Hide resolved
/** | ||
* Asynchronously changes the custom signals for this {@link FirebaseRemoteConfig} instance. | ||
* | ||
* <p>The {@code customSignals} parameter should be an instance of {@link CustomSignals}. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete this line, the type system enforces it.
* | ||
* <p>The {@code customSignals} parameter should be an instance of {@link CustomSignals}. | ||
* | ||
* <p>Custom signals are subject to limits on the size of key/value pairs and the total |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this is public code, you can add a TODO(b/xxxxx) part to link to an internal bug. Ideally we would add a link to the documented restrictions either before release, or one after if the documents are released at the same time.
* <p>Custom signals are subject to limits on the size of key/value pairs and the total | ||
* number of signals. Any calls that exceed these limits will be discarded. | ||
* | ||
* @param customSignals A dictionary of keys and the values of the custom signals to be set for |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need to say it's a dictionary of keys and values. Although less detailed, leaving it to "The custom signals to set for this instances"
Also, it would be good to mention whether setting this overrides the old ones or not.
String value = entry.getValue(); | ||
|
||
// Validate key and value length | ||
if (key.length() > CUSTOM_SIGNALS_MAX_KEY_LENGTH |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since you already have an object wrapping these values, i.e. CustomSignal
, making these checks at that level would move the error point closer to where it's caused (the actual line adding the signal that violates the constrains) and out of a synchronized block
requestBodyMap.put(CUSTOM_SIGNALS, new JSONObject(customSignalsMap)); | ||
|
||
// Log the custom signals during fetch. | ||
Log.d(TAG, "Fetching with custom signals: " + customSignalsMap); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See b/381813034 for context
Out of an abundance of caution, you could potentially only log the keys of the signal map. If you still think it's important and safe to log the map, please add notes in the CustomSignal
methods that create new signals that reinforce the need to not include any sensitive data in the signals.
feat(rc): Add support to set custom signals for Remote Config Custom targeting