我正在将 iOS 应用程序移植到 Catalyst。Catalyst (Mac) 版本将有自己的目标。
有没有一种官方方法可以有条件地为 Catalyst 编译代码?否则,我可以添加特定于目标的定义,但最好使用更通用的定义。
我正在更新我的 iOS 应用程序以在 Mac 上运行。选择 Mac 复选框后,我在尝试为 Mac 构建时在下面的屏幕截图中收到错误消息。它告诉我我需要为这个 Cocoapod 框架选择一个开发团队。但是,我可以在不选择开发团队的情况下构建到 iPhone 或 iPad。
我尝试选择一个使错误消失的开发团队,但是当我将应用程序二进制文件上传到 Apple 时,它被拒绝并显示错误:ITMS-90284:代码签名无效 - 可执行文件“Timestamp.app/Contents/Frameworks/BSImagePicker。 framework/Versions/A/Resources/BSImagePicker.bundle' 必须使用配置文件中包含的证书进行签名。
我想我是从 Apple 收到这个错误的,因为我为这个 Cocoapod 框架选择了一个开发团队。
有关如何处理 Catalyst 应用程序的此错误的任何建议?
我正在尝试将我的第一个 Catalyst 游戏上传到 Mac App Store。
经过一番折腾,我在Mac App Store成功创建了一个条目,然后是最后一部分- 在提交时,它说“配置文件不是“ Mac Catalyst App Store”配置文件!
然后我尝试创建一个配置文件,但在创建过程中 - 我无法通过此页面“生成配置文件”页面,要求创建证书。创建证书后 - (Mac App Distribution)下载并双击 - 然后我再次创建配置文件,但仍然停留在同一页面。那我该怎么办?
PS:Mac App Distribution 可能不是正确的证书吗?我尝试了 Mac Installer Distribution,但结果是一样的(要求在创建配置文件期间创建证书)。
我能够在 Mac Catalyst 中创建一个统一的工具栏SceneDelegate.swift:
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView)
// hide the titlebar
windowScene.titlebar?.toolbar = NSToolbar()
windowScene.titlebar?.titleVisibility = .hidden
...
}
Run Code Online (Sandbox Code Playgroud)
但我想让工具栏像这个例子一样透明:https : //lukakerr.github.io/swift/nswindow-styles#11-transparent-toolbar-without-seperator
这在 Mac Catalyst 中甚至是可能的吗?
我正在尝试使用 mac 催化剂弹出一个文档选择器,但我得到的只是一个空白屏幕。
在 iPad 和 iPhone 上的 ios 13.2.2 上一切正常,但在 macos 10.15.1 catalina 上却不能。
有谁知道如何使用催化剂在 ios 和 macos 中弹出文档选择器?
我的权利文件具有:
<key>com.apple.security.app-sandbox</key>
<false/>
Run Code Online (Sandbox Code Playgroud)
这是显示问题的测试代码。
import Foundation
import SwiftUI
struct ContentView: View {
@State var isFilePickerShown = false
var body: some View {
VStack {
Button(action: { self.isFilePickerShown.toggle() }) {
Image(systemName: "rectangle.and.paperclip").resizable().frame(width: 70, height: 70)
}
}.sheet(isPresented: $isFilePickerShown, onDismiss: {self.isFilePickerShown = false}) {
DocPickerViewController(callback: self.filePicked, onDismiss: { self.isFilePickerShown = false })
}
}
func filePicked(_ url: URL) {
print("\nThe url is: …Run Code Online (Sandbox Code Playgroud) 当我尝试为 Mac Catalyst 上传新的应用程序版本 (1.1) 时收到的消息。
错误 ITMS-90061:“此包无效。Info.plist 文件中密钥 CFBundleVersion [1] 的值必须包含比先前上传的版本 [2] 更高的版本。请在https 上找到有关 CFBundleVersion 的更多信息: //developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion "
我有 iOS 应用程序,它是 2.6 版,Mac OS 应用程序是 1.0 版
我在 Info.plist CFBundleVersion 中更改为 1.1 ,但我仍然收到该错误。
如何在用 SwiftUI 编写的 Catalyst 应用程序中添加触控栏支持?
例如,如果我想在视图中显示一个按钮:
import SwiftUI
struct ContentView: View {
var body: some View {
VStack{
#if targetEnvironment(macCatalyst)
Text("macOS")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.focusable()
.touchBar {
Button(action: {
print("tapped")
}) {
Text("TestButton")
}
}
#endif
Text("iOS")
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在 macOS 应用程序中使用它,它可以工作,但如果我在 Catalyst 中使用它并添加 targetEnvironment,则会出现错误:
“focusable(_:onFocusChange:)”在 iOS 中不可用,“touchBar(content:)”在 iOS 中不可用
谢谢你的帮助。
我正在为 iPad 编写纸牌游戏应用程序,并希望使用 Catalyst 将其带到 Mac。该游戏并不是支持多个窗口很有意义的游戏。但是,我在 iPad 上的模态表单中显示了一个统计屏幕,我宁愿在 Catalyst 上的新窗口中打开它。这是我想要添加新窗口的唯一场景。
有没有办法支持多窗口应用程序,但仅限于应用程序的 Catalyst 版本?如果我在 Xcode 的应用程序目标设置中选中“支持多个窗口”复选框,那么用户会突然被授予从 App Expose 在 iPad 应用程序上打开更多窗口的选项,这不是我正在寻找的功能。
我正在构建一个 iOS 应用程序,并且客户端想要启用在 Mac 上运行的功能。我启用了它并在我的 Mac 上按预期运行。我怎样才能让他们在他们的 Mac 上测试它?因为 TestFlight 只在 iOS 设备上运行。
我正在寻找从 macOS 的 Finder 接收打开文件的 URL 的方法。我在 Mac-Catalyst 应用程序的 info.plist 中实现了 ZIP 文档类型关联。所以如果用户曾经将 ZIP 文件关联到我的应用程序作为默认应用程序,用户可以双击 ZIP 文件并启动我的应用程序。
但目前我的应用程序无法接收打开的文件 URL,因为我不知道哪个地方/委托函数适合接收该 URL。我相信我应该在 SceneDelegate 或 AppDelegate 中实现该委托功能,并且我还应该手动使用 Storyboard 实现启动第一个视图控制器。这个应用程序窗口启动链(即从文件双击到视图控制器调用结束)对我来说非常困难。
有帮助文档或示例代码吗?谢谢你。
mac-catalyst ×10
ios ×5
macos ×3
swift ×2
swiftui ×2
xcode ×2
cocoapods ×1
ipados ×1
multi-window ×1
testflight ×1
uiwindow ×1