测试从 App Clip 到完整 App 的转换
Testing the transition from app clip to full app
我的应用程序已经在应用程序商店中有一段时间了。我现在想添加一个应用程序剪辑,它有一个按钮,可以让用户从应用程序商店下载完整的应用程序(使用 SKOverlay
)。另外,我想让app clip给完整的app传递参数(这一步很关键)。
例如,用户名将传递给完整的应用程序并显示在主 activity 中。这是通过将此信息放入应用剪辑的 shared user defaults
中,并从完整应用中的 shared user defaults
中提取此信息来完成的。
我使用这些功能创建了 App Clip,现在想测试从 App Clip 到完整应用的转换。
我尝试了 3 种不同的方法,但其中 none 使我能够模拟完整的 app-clip-to-full-app 体验:
- 运行 Xcode 中的应用剪辑并使用
_XCAppClipURL
环境变量进行测试。 SKOverlay 弹出,但它实际上并不能使我打开应用程序商店。
- 在我的测试设备上设置本地体验(如 here 所述)也显示了 SKOverlay,但我无法真正打开应用商店。
- Test Flight:我将构建上传到应用商店以使用 Test Flight,并添加了一个应用剪辑调用 URL 到内部和外部测试。使用 Test Flight 打开 App Clip 时,'Get the full app' 按钮实际上将我转到了应用商店,但转到了旧版本的应用。不用说,旧版本的应用程序与测试无关,因为它没有从
shared user defaults
. 中提取用户名所需的代码
有没有办法让我在不向应用商店发布最新版本的情况下测试此转换?
编辑:我将 UserDefaults 与应用程序组一起使用。我在完整应用程序和应用程序剪辑的 'signing and capabilities' 部分定义了一个同名的应用程序组。并添加了以下代码:
在 App Clip 的场景委托中:
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
SKOverlay
不过是一个令人欣慰的App Storelink。
不可能模拟那个确切的流程(因为在调试时 SKOverlay
什么都不做),但我也不认为这是必要的。
您可以通过 Xcode 安装 App Clip 来测试您的流程,完成体验,然后通过 Xcode 安装完整的应用程序。
更新:
如果您希望您的 Clip 和您的 App 通过用户默认设置共享数据,您将不得不使用 App Groups。
我也在努力测试这个转换,并认为它在某一时刻是不可能的。测试不仅可以,而且非常重要,这样升级体验才会流畅。
几点:
- 您不需要 App Store 来获取任何内容。那是一个单独的系统。在您的设备本地构建 App Clip(使用
_XCAppClipURL
),然后通过在同一设备上构建您的完整应用来模拟升级。
- 如前所述,您需要设置应用程序组并正确使用
UserDefaults
API。注意:设置部分很棘手,如果在构建完整的应用程序后没有看到预期的数据,则说明设置不正确。
一些要检查的东西:
- 应用程序剪辑和完整应用程序的配置文件需要具有应用程序组授权。您可能有用于调试和发布配置的 PP,因此请记住这一点。
- 应用剪辑和完整应用的功能选项卡都需要启用应用组。
这两件事可能很明显,但我弄错了。
我的应用程序已经在应用程序商店中有一段时间了。我现在想添加一个应用程序剪辑,它有一个按钮,可以让用户从应用程序商店下载完整的应用程序(使用 SKOverlay
)。另外,我想让app clip给完整的app传递参数(这一步很关键)。
例如,用户名将传递给完整的应用程序并显示在主 activity 中。这是通过将此信息放入应用剪辑的 shared user defaults
中,并从完整应用中的 shared user defaults
中提取此信息来完成的。
我使用这些功能创建了 App Clip,现在想测试从 App Clip 到完整应用的转换。
我尝试了 3 种不同的方法,但其中 none 使我能够模拟完整的 app-clip-to-full-app 体验:
- 运行 Xcode 中的应用剪辑并使用
_XCAppClipURL
环境变量进行测试。 SKOverlay 弹出,但它实际上并不能使我打开应用程序商店。 - 在我的测试设备上设置本地体验(如 here 所述)也显示了 SKOverlay,但我无法真正打开应用商店。
- Test Flight:我将构建上传到应用商店以使用 Test Flight,并添加了一个应用剪辑调用 URL 到内部和外部测试。使用 Test Flight 打开 App Clip 时,'Get the full app' 按钮实际上将我转到了应用商店,但转到了旧版本的应用。不用说,旧版本的应用程序与测试无关,因为它没有从
shared user defaults
. 中提取用户名所需的代码
有没有办法让我在不向应用商店发布最新版本的情况下测试此转换?
编辑:我将 UserDefaults 与应用程序组一起使用。我在完整应用程序和应用程序剪辑的 'signing and capabilities' 部分定义了一个同名的应用程序组。并添加了以下代码:
在 App Clip 的场景委托中:
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
SKOverlay
不过是一个令人欣慰的App Storelink。
不可能模拟那个确切的流程(因为在调试时 SKOverlay
什么都不做),但我也不认为这是必要的。
您可以通过 Xcode 安装 App Clip 来测试您的流程,完成体验,然后通过 Xcode 安装完整的应用程序。
更新:
如果您希望您的 Clip 和您的 App 通过用户默认设置共享数据,您将不得不使用 App Groups。
我也在努力测试这个转换,并认为它在某一时刻是不可能的。测试不仅可以,而且非常重要,这样升级体验才会流畅。
几点:
- 您不需要 App Store 来获取任何内容。那是一个单独的系统。在您的设备本地构建 App Clip(使用
_XCAppClipURL
),然后通过在同一设备上构建您的完整应用来模拟升级。 - 如前所述,您需要设置应用程序组并正确使用
UserDefaults
API。注意:设置部分很棘手,如果在构建完整的应用程序后没有看到预期的数据,则说明设置不正确。
一些要检查的东西:
- 应用程序剪辑和完整应用程序的配置文件需要具有应用程序组授权。您可能有用于调试和发布配置的 PP,因此请记住这一点。
- 应用剪辑和完整应用的功能选项卡都需要启用应用组。
这两件事可能很明显,但我弄错了。