Clean Architecture中In app purchase、Firebase Messaging应归属Data层还是Presentation层
结论
首先可以明确:应用内购买(In App Purchase)、Firebase云消息(Firebase Messaging)均不属于Presentation层,统一归属Data层,符合Clean Architecture的分层规则,核心依据如下:
分层职责匹配逻辑
Clean Architecture各层的核心边界要求中:
- Domain层仅存放无外部依赖的核心业务规则,不耦合任何第三方SDK
- Presentation层仅存放和UI渲染、用户交互相关的逻辑,仅依赖Domain层的抽象接口
- Data层负责所有外部依赖的对接,包括三方服务、本地存储、网络请求、硬件能力调用等,作为数据源为上层提供数据
两类服务的归属依据
- 应用内购买(IAP):本质是对接应用商店的第三方支付能力,属于「支付状态数据源」范畴,本身不涉及UI逻辑也不属于核心业务规则。你可以在Data层将IAP的SDK调用封装为对应Repository的实现类,只向Domain层暴露无SDK依赖的抽象接口(例如
getPurchaseStatus()、launchPurchaseFlow()),Domain层不需要感知底层IAP的实现细节。 - Firebase云消息(FCM):本质是对接谷歌推送服务的第三方消息通道,属于「推送消息数据源」范畴,SDK的初始化、令牌获取、原生消息接收逻辑都和UI层无直接关联。只有当你拿到推送内容后需要做弹窗、页面跳转等交互操作时,才会调用到Presentation层的逻辑,FCM本身的能力封装全部放在Data层即可。
额外注意点
不要将两类SDK的直接调用写在Presentation层,否则会导致UI层和第三方服务强耦合,后续更换IAP方案、推送服务时需要修改UI层代码,违反分层的依赖倒置原则。
内容的提问来源于stack exchange,提问作者Andrewlee1228
相关产品推荐
相关产品推荐

