我的应用程序在应用商店中已经有一段时间了。我现在想添加一个应用剪辑,它有一个按钮,可以让用户从应用商店下载完整的应用(使用SKOverlay
)。另外,我希望应用剪辑将参数传递给完整的应用程序(这一步很关键)。例如,用户名将被传递给完整的应用程序并呈现在主活动中。这是通过将此信息放入应用程序剪辑中并从完整应用程序中shared user defaults
提取此信息来完成的。shared user defaults
我创建了具有这些功能的应用程序剪辑,现在想测试从应用程序剪辑到完整应用程序的转换。
我尝试了 3 种不同的方法,但没有一种方法能够让我模拟完整的 app-clip-to-full-app 体验:
- 在 Xcode 中运行应用程序剪辑并使用
_XCAppClipURL
环境变量进行测试。SKOverlay 弹出,但实际上并不能让我打开应用商店。 - 在我的测试设备上设置本地体验(如此处所述)也显示了 SKOverlay,但无法让我真正打开应用商店。
- 测试飞行:我将构建上传到应用商店以使用测试飞行,并为内部和外部测试添加了一个应用程序剪辑调用 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