react-native-google-mobile-ads
Version:
React Native Google Mobile Ads is an easy way to monetize mobile apps with targeted, in-app advertising.
498 lines • 19.6 kB
TypeScript
/**
* Copyright (c) 2016-present Invertase Limited & Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this library except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { TurboModule } from 'react-native';
import { TCModel } from '@iabtcf/core';
/**
* AdsConsentDebugGeography enum.
*
* Used to set a mock location when testing the `AdsConsent` helper.
*/
export declare enum AdsConsentDebugGeography {
/**
* Disable any debug geography.
*/
DISABLED = 0,
/**
* Geography appears as in EEA for debug devices.
*/
EEA = 1,
/**
* @deprecated Use `OTHER`.
*/
NOT_EEA = 2,
/**
* Geography appears as in a regulated US State.
*/
REGULATED_US_STATE = 3,
/**
* Geography appears as in a region with no regulation in force.
*/
OTHER = 4
}
/**
* AdsConsentStatus enum.
*/
export declare enum AdsConsentStatus {
/**
* Unknown consent status, AdsConsent.requestInfoUpdate needs to be called to update it.
*/
UNKNOWN = "UNKNOWN",
/**
* User consent required but not yet obtained.
*/
REQUIRED = "REQUIRED",
/**
* User consent not required.
*/
NOT_REQUIRED = "NOT_REQUIRED",
/**
* User consent already obtained.
*/
OBTAINED = "OBTAINED"
}
/**
* AdsConsentPrivacyOptionsRequirementStatus enum.
*/
export declare enum AdsConsentPrivacyOptionsRequirementStatus {
/**
* Unknown consent status, AdsConsent.requestInfoUpdate needs to be called to update it.
*/
UNKNOWN = "UNKNOWN",
/**
* User consent required but not yet obtained.
*/
REQUIRED = "REQUIRED",
/**
* User consent not required.
*/
NOT_REQUIRED = "NOT_REQUIRED"
}
/**
* The options used when requesting consent information.
*/
export interface AdsConsentInfoOptions {
/**
* Sets the debug geography to locally test consent.
*/
debugGeography?: AdsConsentDebugGeography;
/**
* Set to `true` to provide the option for the user to accept being shown personalized ads, defaults to `false`.
*/
tagForUnderAgeOfConsent?: boolean;
/**
* An array of test device IDs to allow.
*/
testDeviceIdentifiers?: string[];
}
/**
* The result of requesting info about a users consent status.
*/
export interface AdsConsentInfo {
/**
* The consent status of the user.
*
* - `UNKNOWN`: Unknown consent status.
* - `REQUIRED`: User consent required but not yet obtained.
* - `NOT_REQUIRED`: User consent not required.
* - `OBTAINED`: User consent already obtained.
*/
status: AdsConsentStatus;
/**
* Indicates whether the app has completed the necessary steps for gathering updated user consent.
*/
canRequestAds: boolean;
/**
* Privacy options requirement status.
*/
privacyOptionsRequirementStatus: AdsConsentPrivacyOptionsRequirementStatus;
/**
* If `true` a consent form is available.
*/
isConsentFormAvailable: boolean;
}
/**
* The options used when requesting consent information.
*
* https://vendor-list.consensu.org/v2/vendor-list.json
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework
*/
export interface AdsConsentUserChoices {
/**
* Your device can be identified based on a scan of your device's
* unique combination of characteristics.
*
* Vendors can:
* - Create an identifier using data collected via actively scanning a device for
* - specific characteristics, e.g. installed fonts or screen resolution.
* - Use such an identifier to re-identify a device.
*/
activelyScanDeviceCharacteristicsForIdentification: boolean;
/**
* Market research can be used to learn more about the audiences who visit sites/apps and view ads.
*
* To apply market research to generate audience insights vendors can:
* - Provide aggregate reporting to advertisers or their representatives about
* the audiences reached by their ads, through panel-based and similarly derived insights.
* - Provide aggregate reporting to publishers about the audiences that were served or
* interacted with content and/or ads on their property by applying
* panel-based and similarly derived insights.
* - Associate offline data with an online user for the purposes of
* market research to generate audience insights if vendors have declared to match and
* combine offline data sources (Feature 1)
* - Combine this information with other information previously collected including from
* across websites and apps.
*
* Vendors cannot:
* - Measure the performance and effectiveness of ads that a specific user was served or
* interacted with, without a Legal Basis to measure ad performance.
* - Measure which content a specific user was served and how they interacted with it,
* without a Legal Basis to measure content performance.
*/
applyMarketResearchToGenerateAudienceInsights: boolean;
/**
* A profile can be built about you and your interests to show you personalised ads
* that are relevant to you.
*
* To create a personalised ads profile vendors can:
* - Collect information about a user, including a user's activity, interests,
* demographic information, or location, to create or edit a user profile for use
* in personalised advertising.
* - Combine this information with other information previously collected,
* including from across websites and apps, to create or edit a user profile
* for use in personalised advertising.
*/
createAPersonalisedAdsProfile: boolean;
/**
* A profile can be built about you and your interests to show you personalised content
* that is relevant to you.
*
* To create a personalised content profile vendors can:
* - Collect information about a user, including a user's activity, interests, visits to
* sites or apps, demographic information, or location, to create or edit a user profile
* for personalising content.
* - Combine this information with other information previously collected,
* including from across websites and apps, to create or edit a user profile for use
* in personalising content.
*/
createAPersonalisedContentProfile: boolean;
/**
* Your data can be used to improve existing systems and software,
* and to develop new products
*
* To develop new products and improve products vendors can:
* - Use information to improve their existing products with new features and
* to develop new products
* - Create new models and algorithms through machine learning
*
* Vendors cannot:
* - Conduct any other data processing operation allowed under
* a different purpose under this purpose
*/
developAndImproveProducts: boolean;
/**
* The performance and effectiveness of ads that you see or interact with can be measured.
*
* To measure ad performance vendors can:
* - Measure whether and how ads were delivered to and interacted with by a user
* - Provide reporting about ads including their effectiveness and performance
* - Provide reporting about users who interacted with ads using data observed during
* the course of the user's interaction with that ad
* - Provide reporting to publishers about the ads displayed on their property
* - Measure whether an ad is serving in a suitable editorial environment (brand-safe) context
* - Determine the percentage of the ad that had the opportunity to be seen and
* the duration of that opportunity
* - Combine this information with other information previously collected,
* including from across websites and apps
*
* Vendors cannot:
* - Apply panel- or similarly-derived audience insights data to ad measurement data
* without a Legal Basis to apply market research to generate audience insights (Purpose 9)
*/
measureAdPerformance: boolean;
/**
* The performance and effectiveness of content that you see or interact with can be measured.
*
* To measure content performance vendors can:
* - Measure and report on how content was delivered to and interacted with by users.
* - Provide reporting, using directly measurable or known information, about users who
* interacted with the content
* - Combine this information with other information previously collected,
* including from across websites and apps.
*
* Vendors cannot:
* - Measure whether and how ads (including native ads) were delivered to and
* interacted with by a user.
* - Apply panel- or similarly derived audience insights data to ad measurement
* data without a Legal Basis to apply market research to generate audience insights (Purpose 9)
*/
measureContentPerformance: boolean;
/**
* Ads can be shown to you based on the content you’re viewing,
* the app you’re using, your approximate location, or your device type.
*
* To do basic ad selection vendors can:
* - Use real-time information about the context in which the ad will be shown,
* to show the ad, including information about the content and the device, such as:
* device type and capabilities, user agent, URL, IP address
* - Use a user’s non-precise geolocation data
* - Control the frequency of ads shown to a user.
* - Sequence the order in which ads are shown to a user.
* - Prevent an ad from serving in an unsuitable editorial (brand-unsafe) context
*
* Vendors cannot:
* - Create a personalised ads profile using this information for the selection of
* future ads without a separate legal basis to create a personalised ads profile.
* - N.B. Non-precise means only an approximate location involving at least a radius
* of 500 meters is permitted.
*/
selectBasicAds: boolean;
/**
* Personalised ads can be shown to you based on a profile about you.
*
* To select personalised ads vendors can:
* - Select personalised ads based on a user profile or other historical user data,
* including a user’s prior activity, interests, visits to sites or apps, location,
* or demographic information.
*/
selectPersonalisedAds: boolean;
/**
* Personalised content can be shown to you based on a profile about you.
*
* To select personalised content vendors can:
* - Select personalised content based on a user profile or other historical user data,
* including a user’s prior activity, interests, visits to sites or apps, location,
* or demographic information.
*/
selectPersonalisedContent: boolean;
/**
* Cookies, device identifiers, or other information can be stored or
* accessed on your device for the purposes presented to you.
*
* Vendors can:
* - Store and access information on the device such as cookies and
* device identifiers presented to a user.
*/
storeAndAccessInformationOnDevice: boolean;
/**
* Your precise geolocation data can be used in support of one or more purposes.
* This means your location can be accurate to within several meters.
*
* Vendors can:
* - Collect and process precise geolocation data in support of one or more purposes.
* - Precise geolocation means that there are no restrictions on the precision of
* a user's location; this can be accurate to within several meters.
*/
usePreciseGeolocationData: boolean;
}
export interface AdsConsentInterface {
/**
* Requests user consent information.
*
* The response from this method provides information about consent form availability and consent status.
*
* #### Example
*
* ```js
* import { AdsConsent } from 'react-native-google-mobile-ads';
*
* const consentInfo = await AdsConsent.requestInfoUpdate();
* console.log('A consent form is available:', consentInfo.isConsentFormAvailable);
* console.log('User consent status:', consentInfo.status);
* ```
* @param options An AdsConsentInfoOptions interface.
*/
requestInfoUpdate(options?: AdsConsentInfoOptions): Promise<AdsConsentInfo>;
/**
* Shows a Google-rendered user consent form.
*
* #### Example
*
* ```js
* import { AdsConsent, AdsConsentStatus } from 'react-native-google-mobile-ads';
*
* async function requestConsent() {
* const consentInfo = await AdsConsent.requestInfoUpdate();
*
* // Check if user requires consent
* if (
* consentInfo.isConsentFormAvailable &&
* (consentInfo.status === AdsConsentStatus.UNKNOWN ||
* consentInfo.status === AdsConsentStatus.REQUIRED)) {
* // Show a Google-rendered form
* const formResult = await AdsConsent.showForm();
*
* console.log('User consent obtained: ', formResult.status === AdsConsentStatus.OBTAINED);
* }
* }
*
* ```
*/
showForm(): Promise<AdsConsentInfo>;
/**
* Presents a privacy options form if privacyOptionsRequirementStatus is required.
*/
showPrivacyOptionsForm(): Promise<AdsConsentInfo>;
/**
* Loads a consent form and immediately presents it if consentStatus is required.
*
* This method is intended for the use case of showing a form if needed when the app starts.
*/
loadAndShowConsentFormIfRequired(): Promise<AdsConsentInfo>;
/**
* Returns the UMP Consent Information from the last known session.
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* const consentInfo = await AdsConsent.getConsentInfo();
* ```
*/
getConsentInfo(): Promise<AdsConsentInfo>;
/**
* Helper method to call the UMP SDK methods to request consent information and load/present a
* consent form if necessary.
*
* @param options An AdsConsentInfoOptions interface.
*/
gatherConsent(options?: AdsConsentInfoOptions): Promise<AdsConsentInfo>;
/**
* Returns the value stored under the `IABTCF_TCString` key
* in NSUserDefaults (iOS) / SharedPreferences (Android) as
* defined by the IAB Europe Transparency & Consent Framework.
*
* More information available here:
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* const tcString = await AdsConsent.getTCString();
* ```
*/
getTCString(): Promise<string>;
/**
* Returns the TC Model of the saved IAB TCF 2.0 String.
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* const tcModel = await AdsConsent.getTCModel();
* ```
*/
getTCModel(): Promise<TCModel>;
/**
* Returns the value stored under the `IABTCF_gdprApplies` key
* in NSUserDefaults (iOS) / SharedPreferences (Android) as
* defined by the IAB Europe Transparency & Consent Framework.
*
* More information available here:
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* await AdsConsent.requestInfoUpdate();
* const gdprApplies = await AdsConsent.getGdprApplies();
* ```
*/
getGdprApplies(): Promise<boolean>;
/**
* Returns the value stored under the `IABTCF_PurposeConsents` key
* in NSUserDefaults (iOS) / SharedPreferences (Android) as
* defined by the IAB Europe Transparency & Consent Framework.
*
* More information available here:
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* await AdsConsent.requestInfoUpdate();
* const purposeConsents = await AdsConsent.getPurposeConsents();
* const hasConsentForPurposeOne = purposeConsents.startsWith("1");
* ```
*/
getPurposeConsents(): Promise<string>;
/**
* Returns the value stored under the `IABTCF_PurposeLegitimateInterests` key
* in NSUserDefaults (iOS) / SharedPreferences (Android) as
* defined by the IAB Europe Transparency & Consent Framework.
*
* More information available here:
* https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* await AdsConsent.requestInfoUpdate();
* const purposeLegitimateInterests = await AdsConsent.getPurposeLegitimateInterests();
* const hasLegitimateInterestForPurposeTwo = purposeLegitimateInterests.split("")[1] === "1";
* ```
*/
getPurposeLegitimateInterests(): Promise<string>;
/**
* Provides information about a user's consent choices.
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* const { storeAndAccessInformationOnDevice } = await AdsConsent.getUserChoices();
* ```
*/
getUserChoices(): Promise<AdsConsentUserChoices>;
/**
* Resets the UMP SDK state.
*
* #### Example
*
* ```js
* import { AdsConsent } from '@invertase/react-native-google-ads';
*
* AdsConsent.reset();
* ```
*/
reset(): void;
}
export interface Spec extends TurboModule {
requestInfoUpdate(options?: AdsConsentInfoOptions): Promise<AdsConsentInfo>;
showForm(): Promise<AdsConsentInfo>;
showPrivacyOptionsForm(): Promise<AdsConsentInfo>;
loadAndShowConsentFormIfRequired(): Promise<AdsConsentInfo>;
getConsentInfo(): Promise<AdsConsentInfo>;
getTCString(): Promise<string>;
getGdprApplies(): Promise<boolean>;
getPurposeConsents(): Promise<string>;
getPurposeLegitimateInterests(): Promise<string>;
reset(): void;
}
declare const _default: Spec;
export default _default;
//# sourceMappingURL=NativeConsentModule.d.ts.map