Go to file
dzq df23fcd7a9 Description: oaid初始化后,连续多次请求,概率闪退问题处理
Feature or Bugfix: Bugfix
Binary Source:No Signed-off-by:dzq<dongziqian2@huawei.com>
2024-08-13 09:00:08 +08:00
etc/init oaid重置添加关键日志! 2024-08-08 15:33:28 +08:00
interfaces oaid重置上报HA! 2024-07-31 21:02:07 +08:00
profile Description: oaid按需启停改造 2024-07-24 14:35:58 +08:00
services Description: oaid初始化后,连续多次请求,概率闪退问题处理 2024-08-13 09:00:08 +08:00
test/fuzztest Description: TDD添加cjson 2024-04-01 17:00:04 +08:00
utils Description: oaid按需启停改造 2024-08-01 11:46:06 +08:00
BUILD.gn Description: oaid change path 2023-10-25 15:38:44 +08:00
bundle.json Description: oaid按需启停改造 2024-08-01 16:20:39 +08:00
LICENSE add configure 2023-09-08 13:53:53 +08:00
oaid.gni Description: oaid sync 2023-10-23 21:55:53 +08:00
README_zh.md 修改oaid readMe格式问题 2024-01-22 14:51:57 +08:00
README.md Description: oaid sync 2023-10-23 21:55:53 +08:00

OAID Service Component

Introduction

The Open Anonymous Device Identifier (OAID) service facilitates personalized ad placement based on OAIDs, each of which is a non-permanent device identifier. The service provides personalized ads for users while protecting their personal data privacy. It can also interact with third-party tracking platforms to provide conversion attribution analysis for advertisers.

Directory Structure

/domains/advertising/oaid # Service code of the OAID service component
├── interfaces                         # API code
├── profile                            # Service configuration profile
├── services                           # Service code
├── test                               # Test cases
├── LICENSE                            # License file
└── bundle.json                        # Build file

How to Use

Obtaining an OAID

You can use the APIs provided in this repository to obtain OAIDs.

  1. Request the ad tracking permission.

    Configure the ohos.permission.APP_TRACKING_CONSENT permission in the module.json5 file of the module.

    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.APP_TRACKING_CONSENT" // Request the ad tracking permission.
          }
        ]
      }
    }
    
  2. Request authorization from the user by displaying a dialog box when the application is started.

    import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
    
    private requestOAIDTrackingConsentPermissions(context: any): void {
      // Display a dialog box when the page is displayed to request the user to grant the ad tracking permission.
      const atManager = abilityAccessCtrl.createAtManager();
      try {
        atManager.requestPermissionsFromUser(context, ["ohos.permission.APP_TRACKING_CONSENT"]).then((data) => {
          if (data.authResults[0] == 0) {
            console.info(`request permission success`);
          } else {
            console.info(`user rejected`);
          }
        }).catch((err) => {
          console.error(`request permission failed, error message: ${err.message}`);
        })
      } catch(err) {
        console.error(`catch err->${JSON.stringify(err)}`);
      }
    }
    
  3. Obtain an OAID.

  • Obtain an OAID through the callback function.

    import identifier from '@ohos.identifier.oaid';
    
    private getOaidByCallback() {
      try {
        identifier.getOAID((err, data) => {
          if (err.code) {
            console.info(`getAdsIdentifierInfo failed, message: ${err.message}`);
    	  } else {
    		const oaid = data;
    		console.error(`getOaidFromOaidSaAPi by callback success`);
    	  }
    	});
      } catch (err) {
        console.error(`catch err->${JSON.stringify(err)}`);
      }
    }
    
  • Obtain an OAID through the promise.

    import identifier from '@ohos.identifier.oaid';
    
    private getOaidByPromise() {
      try {
        // Obtain an OAID.
        identifier.getOAID().then((data) => {
          const oaid = data;
          console.info(`getAdsIdentifierInfo by promise success`);
        }).catch((err) => {
          console.error(`getAdsIdentifierInfo failed, message: ${err.message}`);
        })
      } catch (err) {
        console.error(`catch err->${JSON.stringify(err)}`);
      }
    }
    

Resetting the OAID

You can use the API provided in this repository to reset OAIDs. The API is a system API.

import identifier from '@ohos.identifier.oaid';
 
private resetOaid() {
  try {
    identifier.resetOAID();
  } catch (err) {
    console.error(`reset oaid catch error: ${err.code} ${err.message}`);
  }
}

Repositories Involved