小编Gra*_*mbo的帖子

如何检测 SKPaymentTransaction 何时中断?

我正在按照测试中断的应用内购买的步骤进行操作,如 Apple 文档中“测试中断的购买”标题下的概述。我的问题从第 6 步开始,其中指出:

“在您的代码中,观察付款失败。付款队列收到状态为 SKPaymentTransactionState.failed 的更新交易。”

这对我有用,但失败状态会触发我的 UI 显示错误警报,指出付款失败,即使它只是准备显示条款和条件页面。

有没有办法检测事务何时实际失败,而不是暂停以让其他操作发生?我原以为这里的 SKPaymentTransactionState 状态是deferred而不是failed,因为这样可以更容易地进行适当处理。

storekit in-app-purchase ios swift skpaymenttransaction

9
推荐指数
0
解决办法
289
查看次数

处理包含多种类型的JSON数组-Swift 4 Decodable

我正在尝试使用Swift 4 Decodable解析包含两种不同类型对象的数组。数据看起来像这样,其中的included数组是包含MemberImageMedium对象的数组:

{
  "data": [{
    "id": "8f7cbbac-c133-4b5e-a2ec-1f32353018fa",
    "type": "post",
    "title": "Test Post 1",
    "owner-id": "8986563c-438c-4d77-8115-9e5de2b6e477",
    "owner-type": "member"
  }, {
    "id": "f6b3c640-a58b-449f-93c7-f6cb7b569a9c",
    "type": "post",
    "title": "Test Post 2",
    "owner-id": "38d845a4-db66-48b9-9c15-d857166e255e",
    "owner-type": "member"
  }],
  "included": [{
    "id": "8986563c-438c-4d77-8115-9e5de2b6e477",
    "type": "member",
    "first-name": "John",
    "last-name": "Smith"
  }, {
    "id": "d7218ca1-de53-4832-bb8f-dbceb6747e98",
    "type": "image-medium",
    "asset-url": "https://faketest.com/fake-test-1.png",
    "owner-id": "f6b3c640-a58b-449f-93c7-f6cb7b569a9c",
    "owner-type": "post"
  }, {
    "id": "c59b8c72-13fc-44fd-8ef9-4b0f8fa486a0",
    "type": "image-medium",
    "asset-url": "https://faketest.com/fake-test-2.png",
    "owner-id": "8f7cbbac-c133-4b5e-a2ec-1f32353018fa",
    "owner-type": "post"
  }, {
    "id": "38d845a4-db66-48b9-9c15-d857166e255e",
    "type": "member",
    "first-name": …
Run Code Online (Sandbox Code Playgroud)

json swift swift4 decodable encodable

4
推荐指数
1
解决办法
2884
查看次数

Firebase 存储:使用下载 URL 而不是存储引用

我有一个用于存储图像的iOS应用程序Firebase Storage。上传图像后,我将其保存storage reference在我的Firebase Database. 当应用程序加载时,它storage references从数据库中获取各种信息并使用该FirebaseUI方法显示其相应的图像,如下所示:

let storageRef = Storage.storage().reference(forURL: imageUrl)
imageView.sd_setImage(with: storageRef, placeholderImage: nil)
Run Code Online (Sandbox Code Playgroud)

这很好用……但速度很慢。

在寻找加速解决方案时,Firebase Storage我发现这篇文章暗示使用图像的公共链接,即。它的download url,而不是它的storage referencehttps : //stackoverflow.com/a/44362350/5225013

我的理解是,这与在public urls他们面前有一个 CDN 有关,而storage references没有。

download url可以在用下面的代码应用程序中检索:

let storageRef = Storage.storage().reference(forURL: imageUrl)
storageRef.downloadURL { (downloadUrl, error) in

    if let downloadUrl = downloadUrl {
        // do something with downloadUrl
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,以这种方式获取它对我的目的来说毫无用处,因为在显示图像之前使异步调用需要额外的时间......

我一直在考虑编写一个云函数来将每个图像download …

google-cloud-storage firebase firebase-realtime-database firebaseui firebase-storage

4
推荐指数
1
解决办法
917
查看次数

iOS-如何知道我是否需要路由应用程序覆盖文件

我试图将一个应用程序提交到iTunes Connect上的Apple App Store,但收到此错误消息:

“要将此应用程序配置为iOS路由应用程序,请在iTunes Connect上“我的应用程序”中“应用程序的版本”页面上上传路由应用程序覆盖文件。”

我的应用程序使用MapKit来显示用户所在城市中各种古迹的位置,并提供如何到达古迹的指示。我用Google搜索了此错误,有趣的是,回答该问题的大多数人似乎在说实际上不需要该文件,但是我不确定这是否适用于我的应用程序提供的功能。

我怎么知道我是否真的需要路由覆盖文件?而且,如果我确实需要它,我可以使其覆盖全球吗(即该应用程序应该可以在世界上任何地方运行)?

routing itunesconnect mapkit ios

3
推荐指数
1
解决办法
1682
查看次数