iphone - Google App Engine 可用于 "check for updated"并下载二进制文件 Web 服务吗?

标签 iphone google-app-engine

我是 Google App Engine 新手,如果您能提供任何帮助,我将不胜感激。我有一个 iPhone 应用程序,它从设备上本地存储的 sqlite 数据库获取数据。

我想设置一个 Google App Engine Web 服务,我的 iPhone 客户端将与该服务进行通信,并检查是否有需要下载的较新版本的 sqlite 数据库。

因此,iPhone 客户端使用某种版本号/时间戳访问 Web 服务,如果有更新的文件,App Engine 将通知客户端,然后客户端将请求下载新的数据库,App Engine 将提供服务。

是否可以在 Google App Engine 中设置网络服务来执行此操作?谁能给我指出任何示例代码/教程吗?

非常感谢

最佳答案

我要做的是将 SQLite DB 作为 gzipped blob 保留在数据存储中。使用 SHA1 哈希作为 etag。客户端使用 etag header 执行 GET 请求,服务器使用 304 Not Modified 或 200 进行响应,并在响应正文中包含 blob 内容。

有一个专门用于 Blob 的 API,称为 Blobstore API,但要使用它,您需要启用计费。如果不启用计费,您仍然可以轻松地提供 blob,但每个请求、响应和实体大小将被限制为 10MB。如果您的压缩数据库比这个大,您可以将下载分解为多个请求,因为您控制客户端和服务器代码。仅使用数据存储的自定义 Blob 处理程序可能如下所示:

class MyModel(db.Model):
  body = db.BlobProperty()

class MyBlobHandler(webapp.RequestHandler):
  def get(self):
    entity_key = self.request.get("entity_key")
    entity = MyModel.get(entity_key)
    self.response.headers['Content-type'] = 'what/ever'
    self.response.out.write(entity.body)
  def put(self):
    entity = MyModel(body=db.Blob(self.request.body))
    entity.put()
    self.response.out.write(entity.key())

关于iphone - Google App Engine 可用于 "check for updated"并下载二进制文件 Web 服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939207/

相关文章:

iphone - UIScrollview 的奇怪行为

java - org.datanucleus.store.query.QueryCompilerSyntaxException : Identifier expected at character 12 in "u.username== value"

java - 在 Objectify 4 中保存时忽略一些实体字段

java - objectify 中 ids 和 n 到 m 关系的模式迁移

java - 为什么没有定义 getEntityManager()? "Cannot resolve method getEntityManager"

google-app-engine - 使用 App Engine 进行 Go 的 I18n 策略

ios - 定义警报 View 并使用它

iphone - 使用不同的键访问 NSDictionary 中键的值

iphone - 如何向下滑动一个键盘 向上滑动自定义键盘

iphone - iTunesArtwork 突破发布提交到应用商店