Harmony Preparation
Development Environment Requirements
- DevEco Studio: Latest version recommended
- HarmonyOS SDK: HarmonyOS 2.0 or higher
- Java: Java 8 or higher
- Node.js: 12.0 or higher
Project Configuration
1. Add Dependencies
Add UJU Ad SDK dependencies to your build.gradle file:
gradle
dependencies {
// UJU core SDK
implementation 'com.ujusdk:harmony-sdk:1.0.0'
// Optional adapters
implementation 'com.ujusdk:harmony-csj-adapter:1.0.0'
implementation 'com.ujusdk:harmony-gdt-adapter:1.0.0'
}2. Configure config.json
Add necessary configurations to config.json file:
json
{
"app": {
"bundleName": "com.example.app",
"vendor": "example",
"version": {
"code": 1000000,
"name": "1.0.0"
},
"apiVersion": {
"compatible": 3,
"target": 3
}
},
"deviceConfig": {
"default": {
"orientation": "unspecified",
"network": {
"cleartextTraffic": true
}
}
},
"module": {
"package": "com.example.app",
"name": ".App",
"mainAbility": "com.example.app.MainAbility",
"deviceTypes": ["phone", "tablet"],
"distro": {
"deliveryWithInstall": true,
"moduleName": "entry",
"moduleType": "entry",
"installationFree": false
},
"abilities": [
{
"name": "com.example.app.MainAbility",
"srcEntry": "ets/mainability/MainAbility.ts",
"description": "Main ability",
"icon": "$media:icon",
"label": "App",
"type": "page",
"visible": true,
"skills": [
{
"entities": ["entity.system.home"],
"actions": ["action.system.home"]
}
]
}
]
}
}3. Configure Permissions
Add necessary permissions to module.json5 file:
json
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"reason": "Needed for ad network connections",
"usedScene": {
"ability": ["com.example.app.MainAbility"],
"when": "always"
}
},
{
"name": "ohos.permission.GET_NETWORK_INFO",
"reason": "Needed for network status detection",
"usedScene": {
"ability": ["com.example.app.MainAbility"],
"when": "always"
}
}
]
}
}SDK Initialization
Initialize the SDK in your MainAbility class:
java
import com.ujusdk.harmony.UjuAdSDK;
import com.ujusdk.harmony.UjuAdInitConfig;
import com.ujusdk.harmony.callback.InitCallback;
public class MainAbility extends Ability {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
// Initialize UJU SDK
initializeUjuSDK();
super.setMainRoute(MainAbilitySlice.class.getName());
}
private void initializeUjuSDK() {
UjuAdInitConfig config = new UjuAdInitConfig.Builder()
.setAppId("YOUR_APP_ID")
.setAppKey("YOUR_APP_KEY")
.setDebugMode(true)
.build();
UjuAdSDK.init(this, config, new InitCallback() {
@Override
public void onSuccess() {
// SDK initialized successfully
HiLog.info(new HiLogLabel(HiLog.LOG_APP, 0x00001, "UjuSDK"), "UJU SDK initialized successfully");
}
@Override
public void onFailure(String error) {
// SDK initialization failed
HiLog.error(new HiLogLabel(HiLog.LOG_APP, 0x00001, "UjuSDK"), "UJU SDK initialization failed: %{public}s", error);
}
});
}
}Testing
Test Mode
Enable test mode during development:
java
// Enable test mode
UjuAdSDK.setTestMode(true);Test Devices
Add test devices to avoid invalid clicks:
java
// Add test device
UjuAdSDK.addTestDevice("YOUR_DEVICE_ID");Best Practices
- Early initialization: Initialize the SDK as early as possible in the application startup process
- Permission handling: Request necessary permissions before loading ads
- Error handling: Implement proper error handling for ad loading failures
- Ad preloading: Preload ads before they need to be displayed
- Frequency control: Control ad display frequency to avoid user annoyance
Common Questions
Q: Why isn't the SDK initializing?
A: Possible reasons:
- Incorrect App ID or App Key
- Network connection issues
- HarmonyOS version incompatibility
- Missing required permissions
Q: What permissions are required for Harmony ads?
A: Required permissions:
ohos.permission.INTERNET: For network accessohos.permission.GET_NETWORK_INFO: For network status detection
Optional permissions:
ohos.permission.LOCATION: For better ad targeting
Next Steps
After completing the preparation work, you can proceed with:
