鸿蒙的商业化模式(分成政策、广告变现)
1. 引言
在万物互联时代,操作系统作为连接硬件与应用的底层基石,其商业化能力直接影响生态的繁荣与开发者的积极性。鸿蒙系统(HarmonyOS)作为华为自主研发的面向全场景的分布式操作系统,凭借“一次开发,多端部署”的核心优势,已覆盖手机、平板、智慧屏、车机、智能家居等多种设备,构建了庞大的用户基础(截至 202X 年,鸿蒙设备全球装机量突破 XX 亿)。对于开发者而言,如何在鸿蒙生态中实现商业价值转化(如通过应用内购买分成、广告流量变现)是关键问题。
本文将聚焦鸿蒙的商业化模式,深入解析其 分成政策(应用市场抽成规则、开发者收益分配) 与 广告变现(流量广告接入、激励视频等模式) 的核心机制,结合技术背景、应用场景、代码实现及未来挑战,为开发者提供从入门到落地的完整指南,助力鸿蒙生态的共赢发展。
2. 技术背景
2.1 鸿蒙系统的分发与商业化生态
鸿蒙系统通过 华为应用市场(AppGallery) 作为核心分发渠道,为开发者提供应用上架、用户触达及商业化支持的一站式服务。与安卓的 Google Play 或 iOS 的 App Store 类似,鸿蒙应用市场通过 分成政策 调节开发者与平台的收益分配,同时依托 华为广告服务(HUAWEI Ads) 为应用提供流量变现能力。
鸿蒙的商业化模式设计兼顾了开发者激励与平台可持续性:一方面通过低分成比例(如 15%~30%)吸引中小开发者入驻,降低变现门槛;另一方面通过广告 SDK 的深度集成(支持激励视频、横幅广告等主流形式),帮助应用在不影响用户体验的前提下实现流量价值最大化。此外,鸿蒙的分布式特性(如多设备协同)为广告主提供了跨终端的精准投放能力(如手机端点击广告后,智慧屏端同步展示相关内容),进一步提升了广告转化效率。
3. 应用使用场景
3.1 场景1:独立应用的付费下载与内购分成(如工具类APP)
- 需求:开发者发布一款鸿蒙版「文件管理器」工具应用,用户可选择 付费下载(一次性买断) 或 免费+内购高级功能(如云同步、无广告),鸿蒙应用市场按约定比例(如 30%)抽取分成,开发者获得剩余收益。
3.2 场景2:免费应用的广告流量变现(如资讯类APP)
- 需求:一款鸿蒙版「新闻阅读」应用通过免费内容吸引用户,通过在文章详情页嵌入 横幅广告(Banner) 或视频播放前插入 激励视频广告(用户观看广告后解锁完整内容),接入华为广告服务获取广告收益,按点击量(CPC)或展示量(CPM)与平台分成。
3.3 场景3:游戏应用的内购与激励视频结合(如休闲游戏)
- 需求:鸿蒙版「消消乐」游戏采用「免费下载+内购道具(如复活、关卡提示)」模式,同时通过 激励视频广告(用户观看广告后获得额外道具) 提升用户活跃度与收益,广告收益与内购收入均通过华为分成政策结算。
3.4 场景4:跨设备服务的订阅制变现(如智能家居控制APP)
- 需求:一款鸿蒙版「全屋智能管家」应用提供跨手机、平板、智慧屏的智能家居控制服务,用户订阅 月费会员(如 9.9 元/月) 后享受多设备联动特权,订阅收入按鸿蒙分成政策分配,同时可通过智慧屏端的 沉浸式广告(如品牌宣传视频) 补充收益。
4. 不同场景下的详细代码实现
4.1 环境准备
- 开发工具:华为 DevEco Studio(鸿蒙官方 IDE,支持 Java/Kotlin/JS/ArkTS 开发)、华为开发者联盟账号(用于注册应用市场与广告服务);
- 核心服务:
- 华为应用市场:应用上架与分成结算(需注册开发者账号并完成实名认证);
- 华为广告服务(HUAWEI Ads):广告 SDK 接入(支持 Banner、激励视频、插屏广告等);
- 注意事项:
- 商业化功能需在鸿蒙应用中集成 AGC(AppGallery Connect)服务(如应用内支付、广告 SDK);
- 广告变现需遵守华为的 内容政策(如禁止虚假广告、诱导点击);
- 分成政策以华为官方最新规则为准(可通过开发者联盟官网查询)。
4.2 基础代码:鸿蒙应用内购分成实现(ArkTS 示例)
以下代码演示如何在鸿蒙应用中集成 应用内支付(IAP) 功能,并通过华为应用市场完成分成结算(以「付费解锁高级功能」为例):
// 1. 导入应用内支付模块(@ohos.application.purchase)
import purchase from '@ohos.application.purchase';
// 2. 定义商品 ID(需在 AGC 控制台配置,如 "premium_feature" 对应高级功能解锁)
const PRODUCT_ID = 'premium_feature';
// 3. 初始化支付并查询可购买商品
async function initPurchase() {
try {
// 检查设备是否支持应用内支付
const isSupported = await purchase.isEnvironmentReady();
if (!isSupported) {
console.error('设备不支持应用内支付');
return;
}
// 查询已配置的商品列表(商品 ID 需与 AGC 控制台一致)
const productList = await purchase.getProductInfo({
productIds: [PRODUCT_ID],
priceType: purchase.PriceType.IN_APP_CONSUMABLE // 消耗型商品(如一次性解锁)
});
if (productList.length > 0) {
const product = productList[0];
console.log(`商品名称: ${product.name}, 价格: ${product.price}, 商品ID: ${product.productId}`);
// 显示购买按钮(实际 UI 中绑定点击事件)
showPurchaseButton(product);
}
} catch (error) {
console.error('初始化支付失败:', error);
}
}
// 4. 处理用户购买行为
async function handlePurchase() {
try {
// 发起购买请求(用户确认后,华为应用市场处理支付)
const purchaseResult = await purchase.requestPurchase({
productId: PRODUCT_ID,
developerPayload: 'custom_data' // 可选:开发者自定义数据(如用户 ID)
});
if (purchaseResult && purchaseResult.resultCode === purchase.ResultCode.SUCCESS) {
console.log('购买成功,商品ID:', purchaseResult.productId);
// 解锁高级功能(如开启云同步)
unlockPremiumFeatures();
// 验证购买凭证(可选:向服务器发送 purchaseResult.purchaseToken 验证真实性)
verifyPurchase(purchaseResult.purchaseToken);
} else {
console.log('购买失败,错误码:', purchaseResult?.resultCode);
}
} catch (error) {
console.error('购买过程出错:', error);
}
}
// 5. 模拟解锁高级功能
function unlockPremiumFeatures() {
console.log('高级功能已解锁(如云同步、无广告)');
// 实际业务中更新 UI 或功能权限
}
// 6. 模拟向服务器验证购买凭证(确保交易真实性)
async function verifyPurchase(purchaseToken: string) {
// 实际开发中需调用后端 API,将 purchaseToken 发送至华为服务器验证
console.log('向服务器验证购买凭证:', purchaseToken);
// 示例:fetch('https://your-server.com/verify', { method: 'POST', body: JSON.stringify({ token: purchaseToken }) });
}
// 7. 显示购买按钮(UI 交互)
function showPurchaseButton(product: any) {
// 实际 UI 框架中(如 ArkUI)绑定点击事件到 handlePurchase()
console.log(`显示购买按钮:${product.name}(点击后调用 handlePurchase)`);
}
// 8. 应用启动时初始化支付
initPurchase();
代码解析
- 核心流程:
- 环境检查:通过
purchase.isEnvironmentReady()
确认设备支持应用内支付; - 商品查询:通过
purchase.getProductInfo()
获取 AGC 控制台配置的商品信息(如价格、商品 ID); - 购买发起:用户点击购买按钮后,调用
purchase.requestPurchase()
发起支付请求,华为应用市场处理实际扣款; - 结果处理:支付成功后,调用
unlockPremiumFeatures()
解锁功能,并通过verifyPurchase()
向服务器验证购买凭证(防止作弊);
- 环境检查:通过
- 分成机制:用户支付的金额中,华为应用市场按约定比例(如 30%)抽取分成,开发者获得剩余 70%(具体比例以华为最新政策为准,部分区域或商品类型可能不同)。
4.3 进阶代码:鸿蒙广告变现实现(激励视频广告,ArkTS 示例)
以下代码演示如何集成 华为广告服务(HUAWEI Ads) 的 激励视频广告(用户观看完整广告后获得奖励,如游戏道具、内容解锁),适用于资讯类或游戏类应用:
// 1. 导入广告模块(@ohos.ads)
import ads from '@ohos.ads';
// 2. 定义广告位 ID(需在华为广告控制台创建,如 "reward_video_ad")
const AD_SLOT_ID = 'reward_video_ad';
// 3. 初始化广告 SDK(应用启动时调用)
async function initAds() {
try {
// 初始化广告服务(需配置应用 ID,从华为开发者联盟获取)
await ads.init({
appId: 'your_app_id' // 替换为实际应用 ID(华为广告控制台分配)
});
console.log('广告 SDK 初始化成功');
} catch (error) {
console.error('广告 SDK 初始化失败:', error);
}
}
// 4. 加载并展示激励视频广告
async function showRewardVideoAd() {
try {
// 创建激励视频广告实例
const rewardVideoAd = ads.createRewardedVideoAd({
adSlotId: AD_SLOT_ID
});
// 监听广告加载成功事件
rewardVideoAd.on(ads.RewardedVideoAdEventType.LOADED, () => {
console.log('激励视频广告加载成功,准备展示');
// 展示广告(用户观看完整广告后触发奖励)
rewardVideoAd.show();
});
// 监听广告加载失败事件
rewardVideoAd.on(ads.RewardedVideoAdEventType.LOAD_FAILED, (error) => {
console.error('激励视频广告加载失败:', error);
});
// 监听用户获得奖励事件(广告播放完成后触发)
rewardVideoAd.on(ads.RewardedVideoAdEventType.EARNED_REWARD, (reward) => {
console.log('用户获得奖励:', reward); // reward 包含奖励类型与数量(如 { type: 'coin', amount: 10 })
// 给予用户实际奖励(如增加游戏金币)
grantUserReward(reward);
});
// 加载广告(广告素材由华为广告服务动态下发)
rewardVideoAd.load();
} catch (error) {
console.error('展示激励视频广告出错:', error);
}
}
// 5. 模拟给予用户奖励
function grantUserReward(reward: any) {
console.log(`给予用户奖励: ${reward.type} x${reward.amount}(如 10 个金币)`);
// 实际业务中更新用户账户数据(如数据库或本地存储)
}
// 6. 应用启动时初始化广告
initAds();
// 7. 用户点击“观看广告解锁内容”按钮时调用(UI 交互)
function onWatchAdButtonClick() {
showRewardVideoAd();
}
代码解析
- 核心流程:
- SDK 初始化:通过
ads.init()
初始化华为广告服务,需提供从华为开发者联盟获取的应用 ID; - 广告位配置:在华为广告控制台创建激励视频广告位(如
reward_video_ad
),获取对应的广告位 ID; - 广告加载与展示:调用
createRewardedVideoAd()
创建广告实例,监听加载成功事件后调用show()
展示广告; - 奖励发放:用户观看完整广告后,触发
EARNED_REWARD
事件,开发者根据reward
数据给予实际奖励(如游戏金币、内容解锁);
- SDK 初始化:通过
- 分成机制:广告收益按华为与开发者的约定比例分配(通常为开发者获得 60%~80%,具体取决于广告类型与区域),广告主支付费用给华为,华为扣除技术服务费后结算给开发者。
5. 原理解释
5.1 鸿蒙分成政策的工作流程
当用户通过华为应用市场购买应用或内购商品时,系统内部执行以下步骤:
- 交易发起:用户在应用内点击购买按钮(如付费下载或内购高级功能),触发华为应用市场的支付流程;
- 支付处理:华为应用市场调用安全的支付网关(支持多种支付方式,如信用卡、支付宝、微信支付等),完成用户扣款;
- 分成计算:根据商品类型(如消耗型内购、订阅制)与区域政策,系统自动计算开发者与平台的分成比例(如 70% 开发者,30% 华为);
- 资金结算:收入定期(如按月)结算至开发者在华为开发者联盟绑定的银行账户或第三方支付账户(需完成税务与合规审核);
- 数据反馈:开发者通过 AGC 控制台查看交易明细(如订单数量、收入金额、分成比例),优化商业化策略。
5.2 鸿蒙广告变现的原理解析
广告变现的核心是通过流量曝光与用户互动实现收益,具体流程如下:
- 广告请求:应用调用华为广告 SDK 的
load()
方法,向华为广告服务发送广告位 ID 与用户设备信息(如地理位置、兴趣标签); - 广告匹配:华为广告服务根据广告位类型(如激励视频、横幅广告)与用户画像,从广告主池中匹配最相关的广告素材(如品牌推广视频、电商促销横幅);
- 广告展示:匹配成功后,SDK 将广告素材下发至应用,开发者通过代码控制广告的展示时机(如用户进入文章详情页时展示横幅广告,点击“解锁内容”按钮时展示激励视频广告);
- 用户交互:用户观看广告(如完整播放激励视频)或点击广告(如横幅广告跳转至电商页面),触发奖励事件(如获得游戏道具)或广告主付费;
- 收益结算:华为根据广告类型(如 CPC 按点击计费、CPM 按展示计费、CPA 按转化计费)计算广告主费用,扣除技术服务费后,将剩余收益按比例分配给开发者(通过 AGC 控制台查看广告收入明细)。
6. 核心特性
特性 | 说明 |
---|---|
低门槛分成 | 应用内购与付费下载的分成比例灵活(通常 30%~50%,低于部分竞品平台) |
多广告形式支持 | 支持激励视频、横幅广告、插屏广告等主流形式,适配不同场景需求 |
跨设备流量聚合 | 广告收益覆盖手机、平板、智慧屏等多终端,提升整体流量价值 |
实时数据监控 | 通过 AGC 控制台实时查看交易记录(分成收入)与广告表现(展示量/点击率) |
合规保障 | 严格遵守华为的内容政策与隐私规范,确保商业化行为的合法性 |
7. 原理流程图及原理解释
7.1 鸿蒙分成政策流程图
graph TD
A[用户发起购买(内购/付费下载)] --> B{华为应用市场处理支付}
B -->|支付成功| C[系统计算分成比例(如 30% 平台,70% 开发者)]
C --> D[资金结算至开发者账户(按月/按周)]
D --> E[开发者通过 AGC 查看收入明细]
B -->|支付失败| F[提示用户重新支付或取消交易]
7.2 鸿蒙广告变现流程图
graph TD
A[应用请求加载广告(如激励视频)] --> B{华为广告服务匹配广告}
B -->|匹配成功| C[下发广告素材至应用]
C --> D[开发者控制广告展示时机(如用户点击按钮)]
D --> E[用户观看/点击广告]
E --> F{广告类型}
F -->|激励视频| G[用户观看完整广告后获得奖励,开发者记录收益]
F -->|横幅广告| H[用户点击广告后跳转,广告主付费]
G & H --> I[华为计算广告收益(按 CPC/CPM/CPA)]
I --> J[扣除技术服务费后分配给开发者]
J --> K[开发者通过 AGC 查看广告收入]
7.3 原理解释
- 分成政策:华为通过应用市场作为交易中介,承担支付安全与用户信任责任,因此抽取一定比例分成(覆盖支付通道成本、平台维护费用);开发者通过 AGC 控制台灵活配置商品价格与区域策略,优化收益;
- 广告变现:华为广告服务基于海量用户数据(如设备型号、使用习惯)实现精准广告匹配,提升广告主的转化率(如游戏广告主更倾向于投放给年轻用户集中的鸿蒙设备),开发者通过展示高相关性广告获得更高收益;
- 技术支撑:鸿蒙的分布式能力(如多设备协同)为广告主提供了跨终端投放的可能性(如手机端看到广告后,智慧屏端同步推送相关内容),进一步扩大广告覆盖范围。
8. 环境准备
8.1 开发与测试环境
- 操作系统:Windows/macOS/Linux(开发机) + 鸿蒙设备(如华为手机、平板,用于真机测试);
- 开发工具:华为 DevEco Studio(集成鸿蒙 SDK 与 AGC/广告服务插件);
- 注册账号:
- 华为开发者联盟账号(https://developer.huawei.com/consumer),完成实名认证;
- 在 AGC 控制台创建应用(配置应用内支付与广告服务);
- 在华为广告控制台创建广告位(获取广告位 ID);
- 注意事项:
- 真机测试需确保设备已登录华为账号,并开启“开发者模式”;
- 广告变现需遵守华为的《广告政策》(如禁止虚假宣传、诱导点击)。
8.2 兼容性检测代码
// 检查设备是否支持应用内支付(示例)
import purchase from '@ohos.application.purchase';
async function checkPurchaseSupport() {
const isReady = await purchase.isEnvironmentReady();
console.log('设备是否支持应用内支付:', isReady);
}
// 检查广告 SDK 是否可用(示例)
import ads from '@ohos.ads';
async function checkAdSupport() {
try {
await ads.init({ appId: 'your_app_id' }); // 替换为实际应用 ID
console.log('广告 SDK 初始化成功');
} catch (error) {
console.error('广告 SDK 不可用:', error);
}
}
9. 实际详细应用代码示例实现(综合案例:新闻阅读APP)
9.1 场景描述
开发一款鸿蒙版「每日新闻」应用,采用 免费+广告+内购会员 的商业化模式:
- 免费用户:可阅读基础新闻内容,但文章详情页嵌入激励视频广告(观看后解锁完整内容);
- 会员用户:支付 9.9 元/月订阅费后,享受无广告阅读与独家资讯,内购收入按鸿蒙分成政策结算。
9.2 代码实现(关键逻辑片段)
// 新闻详情页组件(简化版)
@Entry
@Component
struct NewsDetailPage {
@State isAdWatched: boolean = false; // 用户是否观看激励视频
@State isMember: boolean = false; // 用户是否为会员
// 页面加载时初始化广告
aboutToAppear() {
this.initAds();
}
// 初始化广告(调用之前实现的 initAds() 与 showRewardVideoAd())
async initAds() {
await initAds(); // 初始化华为广告 SDK
}
// 处理用户阅读完整内容
async readFullContent() {
if (this.isMember) {
// 会员直接阅读
this.showContent();
} else if (this.isAdWatched) {
// 非会员但已观看广告,解锁内容
this.showContent();
} else {
// 非会员且未观看广告,提示观看激励视频
this.showWatchAdPrompt();
}
}
// 显示激励视频提示
showWatchAdPrompt() {
// UI 中显示按钮:“观看广告解锁完整内容”,点击调用 showRewardVideoAd()
console.log('显示提示:观看广告解锁内容');
}
// 显示实际内容
showContent() {
console.log('显示完整新闻内容');
// 实际业务中更新 UI 渲染新闻正文
}
// 处理会员订阅
async subscribeMembership() {
try {
// 调用应用内支付(之前实现的 handlePurchase())
await handlePurchase(); // 商品 ID 为 "monthly_membership"
this.isMember = true;
console.log('会员订阅成功');
} catch (error) {
console.error('会员订阅失败:', error);
}
}
}
代码解析
- 商业化逻辑:
- 免费用户通过观看激励视频广告(
showRewardVideoAd()
)解锁单篇文章的完整内容,广告收益通过华为广告服务结算; - 会员用户通过内购支付(
subscribeMembership()
)订阅月费会员,获得无广告特权,内购收入按鸿蒙分成政策分配;
- 免费用户通过观看激励视频广告(
- 用户体验:通过分层设计(免费+广告/付费+无广告),平衡了用户获取成本与商业收益。
10. 运行结果
10.1 分成政策场景
- 用户付费 19.9 元购买应用内高级功能:华为应用市场抽取 30%(约 5.97 元),开发者获得 70%(约 13.93 元),收益通过 AGC 控制台结算至绑定账户;
- 开发者查看数据:在 AGC 的“应用内支付”页面,可看到订单数量、收入金额、分成比例等明细。
10.2 广告变现场景
- 用户观看 100 次激励视频广告:华为广告服务根据 CPM(每千次展示收益,如 5 元/千次)计算收益(约 0.5 元),扣除技术服务费后,开发者获得约 0.4 元(具体比例以政策为准);
- 开发者优化策略:通过调整广告展示时机(如仅在用户停留超过 30 秒后展示),提升广告点击率与收益。
11. 测试步骤及详细代码
11.1 分成政策测试
- 真机测试:在华为手机上安装应用,点击付费功能(如内购高级功能),确认支付流程正常并生成订单;
- 数据验证:登录 AGC 控制台,查看“应用内支付”页面的订单记录,确认金额与分成比例是否符合预期;
11.2 广告变现测试
- 广告加载测试:在开发工具中模拟广告加载(或使用华为提供的测试广告位 ID),确认激励视频广告能正常加载并展示;
- 用户交互测试:点击“观看广告解锁内容”按钮,观看完整广告后,验证是否触发奖励(如控制台输出“给予用户奖励”);
- 收益模拟:通过华为广告控制台的“测试模式”,查看模拟广告的展示量与点击率数据。
12. 部署场景
12.1 公共应用市场分发
- 适用场景:面向所有鸿蒙用户的应用(如工具类、游戏类、资讯类),通过华为应用市场全球分发,依赖分成政策与广告变现实现盈利;
- 要求:应用需通过华为应用市场的审核(如内容合规性、安全性),并遵守分成政策规则;
12.2 企业级应用内购
- 适用场景:企业开发的内部工具(如员工培训 APP)或行业解决方案(如医疗健康管理),通过付费订阅或内购功能向企业客户收费,收益按分成政策结算;
- 要求:需与企业客户协商定制化支付流程(如企业批量采购),并通过华为的企业服务对接。
13. 疑难解答
13.1 问题1:应用内支付失败(无响应或报错)
- 可能原因:设备未绑定华为账号、支付方式未配置、商品 ID 未在 AGC 控制台正确设置;
- 解决方案:检查设备网络与华为账号状态,确认 AGC 控制台的商品信息(如价格、ID)与代码一致;
13.2 问题2:激励视频广告不加载
- 可能原因:广告位 ID 未在华为广告控制台创建、SDK 未正确初始化、设备网络限制;
- 解决方案:在华为广告控制台确认广告位状态(是否启用),检查代码中的
AD_SLOT_ID
是否匹配,测试时使用华为提供的测试广告位 ID;
13.3 问题3:分成收益未到账
- 可能原因:结算周期未到(如按月结算)、税务信息未完善、应用未通过审核;
- 解决方案:登录 AGC 控制台查看“结算中心”,确认结算状态与时间节点,补充必要的财务信息。
14. 未来展望
14.1 技术趋势
- 多终端协同变现:鸿蒙的分布式能力将支持跨设备广告投放(如手机端点击广告后,智慧屏端同步展示相关内容),提升广告主的 ROI;
- AI 驱动的精准商业化:通过机器学习分析用户行为(如阅读偏好、消费习惯),为开发者提供个性化的广告与内购策略推荐;
- Web 与原生融合:鸿蒙的 Web 能力(如 ArkWeb)将允许 Web 应用集成原生广告 SDK,拓展商业化场景。
14.2 挑战
- 市场竞争压力:需与安卓、iOS 等成熟生态竞争开发者资源,通过更低的分成比例与更优的广告工具吸引入驻;
- 用户隐私合规:随着全球隐私法规(如 GDPR、中国个人信息保护法)的严格化,广告数据的收集与使用需更透明的授权机制;
- 开发者教育:部分中小开发者对鸿蒙商业化工具(如 AGC、广告 SDK)的使用不熟悉,需加强官方文档与培训支持。
15. 总结
鸿蒙的商业化模式通过 分成政策(应用内支付抽成) 与 广告变现(流量广告接入) 双轮驱动,为开发者提供了灵活多样的盈利途径。其核心优势在于低门槛的分成比例(激励中小开发者)、全场景设备覆盖(提升广告流量价值)以及华为广告服务的精准匹配能力(优化收益)。然而,开发者需关注兼容性差异(如不同设备的广告支持程度)、政策合规要求(如内容审核与隐私保护)及用户体体验平衡(避免过度广告影响留存)。
开发者最佳实践:
- 优先接入华为应用市场与广告服务(通过 AGC 控制台完成配置),利用官方工具降低开发成本;
- 根据应用类型选择商业化组合(如工具类侧重内购分成,资讯类侧重广告变现);
- 持续优化用户体验(如激励视频广告的展示时机、会员权益的设计),提升用户付费意愿与广告点击率;
- 关注鸿蒙官方更新(如新的分成政策、广告形式),及时调整策略以适应生态变化。
掌握鸿蒙的商业化模式不仅能帮助开发者在万物互联时代实现商业价值,更能通过优质应用反哺鸿蒙生态的繁荣,形成开发者与平台的共赢局面。
- 点赞
- 收藏
- 关注作者
评论(0)