You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在安卓Gmail应用中使用Google Cloud Pub/Sub实现邮件接收功能

安卓端集成Google Cloud Pub/Sub实现Gmail新邮件接收方案

前置配置(Google Cloud端)

  • 登录Google Cloud Console创建项目,依次启用Gmail API和Cloud Pub/Sub API
  • 进入Pub/Sub主题页,创建自定义主题,给该主题添加发布权限,授权账号固定为gmail-api-push@system.gserviceaccount.com,角色选Pub/Sub发布者
  • 创建对应主题的订阅,安卓端优先选择拉取订阅模式,不需要额外配置推送端点
  • 调用Gmail API的users.watch接口,将你的Gmail账号和Pub/Sub主题绑定,配置需要监听的邮件事件触发规则,后续有新邮件到达时Gmail会自动推送消息到绑定的Pub/Sub主题

安卓端集成步骤

  • 模块级build.gradle添加Pub/Sub依赖,同时排除重复依赖避免编译冲突:
dependencies {
    implementation ('com.google.cloud:google-cloud-pubsub:1.123.0') {
        exclude group: 'com.google.guava', module: 'listenablefuture'
    }
}
  • 身份认证:通过Google Sign-In获取用户的OAuth 2.0令牌,授权范围需同时包含https://www.googleapis.com/auth/gmail.readonly和https://www.googleapis.com/auth/pubsub,禁止直接在安卓端打包服务账号密钥,存在严重泄露风险
  • 后台拉取消息核心逻辑,必须在子线程/协程/WorkManager中执行,禁止在主线程运行:
// 初始化Pub/Sub客户端
val pubSubService = PubSubOptions.newBuilder()
    .setCredentials(GoogleCredentials.create(userOAuthToken))
    .build()
    .service

// 拉取订阅消息,单次最多拉取10条
val pullRequest = PullRequest.newBuilder()
    .setSubscription("projects/你的Google Cloud项目ID/subscriptions/你的订阅名称")
    .setMaxMessages(10)
    .build()
val pullResponse = pubSubService.pull(pullRequest)

// 遍历处理收到的消息
pullResponse.receivedMessagesList.forEach { receivedMessage ->
    // 解析消息内容,获取新邮件的元数据
    val mailNotification = receivedMessage.message.data.toStringUtf8()
    // 这里可调用Gmail API的get方法,根据邮件ID拉取完整邮件内容展示
    // 处理完成后发送确认,避免消息重复投递
    pubSubService.acknowledge(
        AcknowledgeRequest.newBuilder()
            .setSubscription("projects/你的Google Cloud项目ID/subscriptions/你的订阅名称")
            .addAckIds(receivedMessage.ackId)
            .build()
    )
}

优化建议

  • 不需要实时刷新的场景下,用WorkManager设置周期拉取任务,最小间隔建议15分钟,降低电量和流量消耗
  • 需要实时通知的场景,可自行搭建后端服务接收Pub/Sub的推送,再通过FCM给安卓端发静默通知触发拉取,不要在安卓端保持长连接监听,耗电过高
  • 可给订阅设置消息保留时长,最长可保留7天,避免用户长时间不打开应用错过邮件通知

内容的提问来源于stack exchange,提问作者Sagar Dholariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:15:02