UNPKG

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
/** * 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