我正在尝试通过 SwiftUI 的代码控制 Apple Watch 本身的音量。
我正在使用AVPlayer.
是否有一个 API 来设置手表的音量或使用 Digital Crown 来控制音量而不需要
volume上设置属性AVPlayer。这只是设置相对于系统音量的音量。因此,如果系统静音,则不会增加音量。WKInterfaceVolumeControl. 这可以完成工作,但无法调整大小并且在小屏幕上占用大量空间。设置一个新的独立的 WatchOS6 应用程序后,现在支持推送通知,让设备向用户请求推送通知并捕获推送令牌。我无法让我的服务器发送推送通知。
在我的 NodeJS 服务器上设置了所有正确的凭据和 P8 后,我尝试将消息推送到设备......这一直是错误:
状态 400 - DeviceTokenNotForTopic- 根据 Apple 的文档,这意味着主题(应用程序的 BundleId)是错误的。但在这种情况下并非如此。
尝试了 2 个不同的 NPM 包(用于消除)
https://www.npmjs.com/package/node-pushnotifications
https://www.npmjs.com/package/apn
两者都为我提供了相同的问题。
有没有人成功地使用 APNs 完成了一个独立的 WatchOS 应用程序?我错过了什么
———
更新
为了测试节点服务,又做了2个测试:
这次创建了一个新的应用程序,iOS,使用相同的 Bundle Identifier,使用 pushToken 并发送消息服务成功
创建了一个新应用程序,另一个 watchOS,具有不同的捆绑标识符,这再次被拒绝,但 APNs 是针对同一DeviceTokenNotForTopic问题的。
要测试生产,目前唯一的方法是提交到应用商店进行 App Store 审核。TestFlight 选项目前不适用于 Watch,并且无法.ipa手动安装生产临时产品。一旦它在商店里,我将继续进行进一步的测试。
我不想将 SwiftUI 显示View为全屏watchOS(没有取消/后退按钮或时钟)
我尝试Sprite Kit Scene向视图添加 a 并设置.edgesIgnoringSafeArea(.all)但我仍然可以隐藏它们或将视图放在顶部栏下方。
自watchOS 6 SDK的第一个beta版本以来,如果使用watchOS 6.0 SDK进行编译,我的应用程序开始崩溃。watchOS 6.1不会出现此问题,而在模拟器中会更经常发生。现在,我已经能够确定问题所在:
我有一个WKInterfaceImage正在显示通过使用一系列图像制作动画的微调框。如果我有一个WKInterfaceController显示这样的微调器的新推送,则在视图消失时它将崩溃。在内部使用SPInterfaceImageView它似乎被释放了两次。
这是Xcode日志消息:
-[SPInterfaceImageView release]: message sent to deallocated instance 0x3971ed60
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过同样的问题?我猜这是watchOS SDK中的错误。
我不能提供任何源代码,因为仅使用情节提要板就可以实现。我的开发语言是Swift。
亲切的问候
亚历山大·海尼希
我刚刚开始使用 Watch 开发和 SwiftUI,并认为我会从一个简单的登录屏幕开始。我做了两个不同风格的两个按钮。奇怪的是,我的按钮有一个奇怪的红色内部视图,我不知道为什么。
struct ContentView : View
{
var body: some View
{
VStack
{
Button( "Login")
{
}
.accentColor( .white)
.frame( idealHeight:50.0)
.padding( [.leading, .trailing], 10.0)
.background( Color.red)
.cornerRadius( 5.0)
Button( "Sign Up")
{
}
.accentColor( .red)
.frame( idealHeight:50.0)
.padding( [.leading, .trailing], 10.0)
.background( Color.white)
.cornerRadius( 5.0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人能告诉我这里发生了什么吗?
另外,如果有人的声誉为 1500,他们可以创建 WatchOS6 标签吗?
更新:这在 iPhone 上比在手表上工作得更好,按钮在两种设备上的工作方式似乎不同。正如@MarkT 指出的那样,您需要从简单的按钮样式开始。问题在于它会阻止您使用自己的按钮样式。
我想在 watchOS6 中创建 SwiftUI 视图时注入 EnvironmentObject。
但是由于 WKHostingController 需要一个具体类型,我无法执行以下操作 ContentView().environmentObject(UserData())
class HostingController: WKHostingController<ContentView> {
override var body: ContentView {
return ContentView().environmentObject(UserData())
}
}
Run Code Online (Sandbox Code Playgroud)
此代码失败并出现以下错误:
无法将“some View”类型的返回表达式转换为“ContentView”类型
我见过这样的解决方法: 在 watchOS 中使用 environmentObject这似乎是一个黑客而不是一个正确的解决方案。
我问关于同在Twitter上watchOS工程师,他的回答是地方.environmentObject(UserData())的主体内ContentView()。我尝试这样做,但 Xcode 报告错误。
那么有没有人找到一种方法来做同样的事情?
从 WatchOS 6 开始,Apple 可以发布仅限 Watch 的应用程序。虽然我们可以先发布一个 iOS 应用程序,然后再为 Apple Watch 添加一个配套应用程序,但我想知道是否也可以反过来:
我们可以发布仅限 Apple Watch 的应用程序,该应用程序通过 WatchOS App Store 直接安装在手表上,然后再向其添加 iOS 应用程序吗?
这对我很重要,因为我不想在此选项前面设置障碍。在发布您的手表应用程序后,您可能仍然会发现它会从 iPhone 上的配套应用程序中获益。或者您可能会发现,当您的手表应用程序的 iOS 配套应用程序也在 iOS App Store 中可见时,它会获得更多的宣传。
我刚刚看到它WKExtension.shared.EnableWaterLock现在已被弃用。我在我的锻炼应用程序中使用了这种方法来防止意外点击屏幕和结束锻炼等。它是否已被任何其他锁定屏幕的方法所取代?