0

我的应用程序在应用商店中已经有一段时间了。我现在想添加一个应用剪辑,它有一个按钮,可以让用户从应用商店下载完整的应用(使用SKOverlay)。另外,我希望应用剪辑将参数传递给完整的应用程序(这一步很关键)。例如,用户名将被传递给完整的应用程序并呈现在主活动中。这是通过将此信息放入应用程序剪辑中并从完整应用程序中shared user defaults提取此信息来完成的。shared user defaults

我创建了具有这些功能的应用程序剪辑,现在想测试从应用程序剪辑到完整应用程序的转换。

我尝试了 3 种不同的方法,但没有一种方法能够让我模拟完整的 app-clip-to-full-app 体验:

  1. 在 Xcode 中运行应用程序剪辑并使用_XCAppClipURL环境变量进行测试。SKOverlay 弹出,但实际上并不能让我打开应用商店。
  2. 在我的测试设备上设置本地体验(如此所述)也显示了 SKOverlay,但无法让我真正打开应用商店。
  3. 测试飞行:我将构建上传到应用商店以使用测试飞行,并为内部和外部测试添加了一个应用程序剪辑调用 URL。使用 Test Flight 打开应用程序剪辑时,“获取完整应用程序”按钮实际上将我发送到应用程序商店,但转到了旧版本的应用程序。不用说,旧版本的应用程序与测试无关,因为它没有从shared user defaults.

有没有办法让我在不向应用商店发布最新版本的情况下测试这种过渡?

编辑:我将 UserDefaults 与应用程序组一起使用。我在完整应用程序和应用程序剪辑的“签名和功能”部分定义了一个同名的应用程序组。并添加了以下代码:

在应用剪辑的场景委托中:


let username = "Oded"
guard let sharedUserDefaults = UserDefaults(suiteName: "group.fruitapp.appClipToFullApp") else {
            return true
        }
        

        if sharedUserDefaults.string(forKey: "username") == nil {
            sharedUserDefaults.set(username, forKey: "username")
        }
        
        return true

在完整应用的应用委托中:

guard let sharedUserDefaults = UserDefaults(suiteName: "group.fruitapp.appClipToFullApp"),
          let username = sharedUserDefaults.url(forKey: "username")
                else {
                    print("Could not find the App Group or the usename from the app clip")
                    return
                }
            print("username is \(username)")

            //Do more stuff

4

2 回答 2

1

我也在努力测试这种过渡,并认为在某一时刻这是不可能的。测试不仅有可能,而且实际上非常重要,以便升级体验顺畅。

几点:

  • 你不需要 App Store 来做任何事情。那是一个单独的系统。将 App Clip 本地构建到您的设备(使用_XCAppClipURL),然后通过将完整应用构建到同一设备来模拟升级。
  • 如前所述,您需要设置应用组并UserDefaults正确使用 API。注意:设置部分很棘手,如果您在构建完整的应用程序后看不到预期的数据,则说明设置不正确。

需要检查的一些事项:

  1. 应用程序剪辑和完整应用程序的配置文件都需要具有应用程序组权利。您可能有用于调试和发布配置的 PP,因此请记住这一点。
  2. 应用程序剪辑和完整应用程序的功能选项卡需要启用应用程序组。

这两件事可能很明显,但我弄错了。

于 2021-08-19T03:12:10.657 回答
0

SKOverlay只不过是一个令人满意的 App Store 链接。

不可能模拟那个确切的流程(因为在 DebugSKOverlay上什么都不做),但我也不认为这是必要的。

你可以做的测试你的流程是通过 Xcode 安装你的 App Clip,通过体验,然后通过 Xcode 安装完整的应用程序。

更新:

如果您希望您的 Clip 和您的应用程序通过用户默认值共享数据,您将必须使用应用程序组

于 2021-08-18T14:24:25.447 回答