【问题标题】:Send Cloud Storage trigger notifications to client app向客户端应用发送 Cloud Storage 触发器通知
【发布时间】:2020-12-13 02:54:18
【问题描述】:

我的 React Native Expo 应用使用从 Cloud Storage 存储桶获取的图像。第一次获取图像后,我会缓存图像,这样就不必每次都检索图像。但是这些图像可能会偶尔更新一次,我想通知客户端,以便可以自动更新特定图像。

我创建了一个云功能,当云存储上上传/修改文件时触发该功能。 (我也有一个 Flask 后端,但无法在那里集成它)。函数看起来有点像这样

def image_update(event, context):
  print('Event ID: {}'.format(context.event_id))
  print('Event type: {}'.format(context.event_type))
  print('Bucket: {}'.format(event['bucket']))
  print('File: {}'.format(event['name']))
  print('Metageneration: {}'.format(event['metageneration']))
  print('Created: {}'.format(event['timeCreated']))
  print('Updated: {}'.format(event['updated']))
  return event['name']

我想将更新的文件名(如您在上面看到的)返回给客户端,但我不知道该怎么做。我尝试向http://REGION_NAME-PROJECT_ID.cloudfunctions.net/FUNC_NAME 格式的 URL 发送 get/post 请求(适用于 HTTP 函数,但这不是一个,所以不确定),但它不起作用。

我如何通知客户端(通过 HTTP 请求或类似的东西)存储桶中的更新?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-functions google-cloud-storage


    【解决方案1】:

    如果听起来您正在寻找 Object Finalize trigger,它会在每次写入存储桶中的文件时运行。 event['name'] 字段中写入的文件的名称。

    通知您的客户端应用程序更改的常用方法是通过 Firebase 云消息传递。这允许您向应用程序发送消息,即使用户没有积极使用该应用程序。然后,应用可以立即下载新图像,或者(更有可能)从缓存中删除过时的图像,以便在用户下次访问时下载新版本。

    或者,您可以将修改后的图像路径写入数据库(例如 Cloud Firestore),然后在应用启动时从数据库中加载修改后的图像列表。

    【讨论】:

    • 谢谢,我确实在使用 Object Finalize 触发器,但无法找到将其传递给客户端的方法。我会研究 FCM。
    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多