我正在尝试打开Apple Watch应用程序的父应用程序.
在Xcode Beta 2中,我们可以使用以下代码:
WKInterFaceController.openParentApplication
Run Code Online (Sandbox Code Playgroud)
但是,在Xcode beta 3中,我再也找不到代码了.现在我不知道如何从watch app打开父应用程序.请帮忙.
我正在研究Apple手表.我试图InterfaceController使用PageBasedNavigationin 将数组数据从一个传递到另一个watch-kit.那么任何人都可以建议我如何在以watch-kit编程方式滑动表格的同时传递数组?
对于创建基于页面的界面,请按照以下步骤操作:
在我的故事板中,为界面中的每个页面添加界面控制器.
按住Control键并单击应用程序的主界面控制器并拖动到另一个界面控制器.
第二个接口控制器应突出显示,表示segue是可能的.
释放鼠标按钮.
从关系segue面板中选择下一页.
使用相同的技术,从每个接口控制器创建segue到下一个.
我有一个已发布的应用程序,它使用核心数据.
现在我想添加对手表套件和今天扩展的支持.
我需要将核心数据移动到共享容器中,而不会丢失以前用户保存的数据,我该如何以最佳方式执行此操作?
我在Apple Watch上实现了自定义动态 Long Look for push通知.当我在收到推送通知后立即抬起手臂时,这种动态长镜头显示正确.但是,如果我稍后回复,并点击Watch上通知中心内的推送通知,则只会显示静态长视图.
这是正常行为还是我做错了什么?你的动态长期表现如何?
为清楚起见,这里是重现的步骤.
这将带来动态的长期外观:
但这只会带来静态的长期外观:
我试图使用watchOS 2在Apple Watch上渲染线条/步骤图.与iOS 9不同,watchOS 2不支持Quartz.它只支持Core Graphics.我尝试编写一些代码来绘制折线图但我得到一个错误"CGContextRestoreGState:无效的上下文0x0.这是一个严重的错误.这个应用程序,或它使用的库,正在使用无效的上下文,从而有助于整体系统稳定性和可靠性降低.这个通知是礼貌的:请解决这个问题.在即将到来的更新中它将成为一个致命错误."
以下是我使用的代码:
import WatchKit
import Foundation
import UIKit
class InterfaceController: WKInterfaceController{
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
let path = UIBezierPath()
let startPoint = CGPointMake(0.0, 0.0)
path.moveToPoint(startPoint)
let nextPoint = CGPointMake(20.0, 20.0)
path.addLineToPoint(nextPoint)
path.lineWidth = 1.0
UIColor.whiteColor().setStroke()
path.stroke()
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
super.didDeactivate()
}
}
Run Code Online (Sandbox Code Playgroud)
我的最终结果应该像Apple Watch上的Stocks app一样.每当用户点击特定股票时,他将能够查看/可视化该股票的统计数据.任何人都可以帮助我实现这一目标.
我试图从一个父应用程序接收一个对象数组(从应用程序中的Parse中检索),以显示在监视应用程序中.我一直在尝试一些不同的事情,但没有成功.
这是扩展中的代码:
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
var parkPassed = context as! String
openParentAppWithPark(parkPassed)
}
private func openParentAppWithPark(park: String) {
WKInterfaceController.openParentApplication(["request": park], reply: { (reply, error) -> Void in
println(reply)
})
}
Run Code Online (Sandbox Code Playgroud)
以及父应用中的代码:
func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
println("Test")
if let userInfo = userInfo, request = userInfo["request"] as? NSArray {
if request == "Park 1" {
DataManager.sharedInstance.loadRides("Park 1")
} else if request == "Park 2" {
DataManager.sharedInstance.loadRides("Park 2")
} …Run Code Online (Sandbox Code Playgroud) 我刚刚使用Xcode 8的转换功能将Swift 2应用程序转换为Swift 3.
我的代码有一个标记为的类WCSessionDelegate.
在Swift 2中,它编译时没有方法sessionDidBecomeInactive和sessionDidDeactivate.
如果我编译Swift 3版本,编译器会抱怨我的类不符合协议WCSessionDelegate,这显然是正确的.
然后它提供插入两个函数的存根:
public func sessionDidBecomeInactive(_ session: WCSession) { }
public func sessionDidDeactivate(_ session: WCSession) { }
Run Code Online (Sandbox Code Playgroud)
插入这些存根后,会报告以下错误:
Cannot override 'sessionDidBecomeInactive' which has been marked unavailable
Cannot override 'sessionDidDeactivate' which has been marked unavailable
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在研究从Web服务获取计划数据的复杂性.每20-30分钟(或手动),我正在安排WKRefreshBackgroundTask来执行此操作.
正如Apple所建议的那样,我希望操作系统能够通过后台处理这些数据NSURLSession.
这是我用来下载我需要的数据的功能:
func scheduleURLSession()
{
print("\nScheduling URL Session...")
let backgroundSessionConfig:URLSessionConfiguration = URLSessionConfiguration.background(withIdentifier: NSUUID().uuidString)
backgroundSessionConfig.sessionSendsLaunchEvents = true
let backgroundSession = URLSession(configuration: backgroundSessionConfig)
let downloadTask = backgroundSession.downloadTask(with: URL(string: "https://www.myserver.com/somedata")!)
downloadTask.resume()
}
Run Code Online (Sandbox Code Playgroud)
关于这个的一些事情:
问题是,即使我正在调用resume()该任务并允许它在完成时唤醒我的应用程序,它似乎也没有.
完成后,它应该回到WKExtensionDelegate处理程序:
func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>)
Run Code Online (Sandbox Code Playgroud)
作为一个WKURLSessionRefreshBackgroundTask,但它没有.
我的代码与Apple的示例代码相同,然后创建另一个会话,但通过WKURLSessionRefreshBackgroundTask标识符重新加入它.这是设置委托以处理下载数据的位置.检查代码:
func handle(_ backgroundTasks: Set<WKRefreshBackgroundTask>) {
for task in backgroundTasks {
switch task {
case let backgroundTask as WKApplicationRefreshBackgroundTask:
print("\nWatchKit - WKApplicationRefreshBackgroundTask")
// self.updateComplicationDataArrivalTimes(backgroundTask)
self.scheduleURLSession()
backgroundTask.setTaskCompleted()
case let snapshotTask as WKSnapshotRefreshBackgroundTask: …Run Code Online (Sandbox Code Playgroud) nsurlsession watchkit watchos watchos-3 wkrefreshbackgroundtask
我正在使用HKLiveWorkoutBuilder&HKWorkoutRouteBuilder跟踪Apple Watch上的锻炼.
打电话时:
[workoutBuilder finishWorkoutWithCompletion:^(HKWorkout * _Nullable workout, NSError * _Nullable error) {
}];
Run Code Online (Sandbox Code Playgroud)
返回的workout对象不包括用户行进的距离:
(lldb) po workout.totalDistance
nil
Run Code Online (Sandbox Code Playgroud)
但是路线保存正确.
鉴于这.totalDistance是只读的,我应该如何在watchOS 5中设置锻炼的距离?
WKInterfaceMovie - 一个界面元素,可让您在watchOS应用程序中播放视频和音频内容.
按预期工作.视频播放.如何缩放它以填满屏幕?
func setVideoGravity(_ videoGravity: WKVideoGravity)电影的大小调整选项.有关可能值的列表,请参阅WKVideoGravity类型.
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet weak var movieView: WKInterfaceMovie!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
setupVideoPlayer()
}
func setupVideoPlayer() {
guard let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") else {
return
}
movieView.setMovieURL(videoURL)
movieView.setVideoGravity(.resizeAspectFill)
}
}
Run Code Online (Sandbox Code Playgroud)
Xcode中的基本设置.轻触播放按钮时视频加载.加载后播放.不填充屏幕.
WKVideoGravity
表示视频内容外观的常量.
case resizeAspectFill
Run Code Online (Sandbox Code Playgroud)
调整内容的大小以完全填充边界矩形,同时保留内容的原始宽高比.此选项会导致视频边缘超出其裁剪范围.
那很完美.我们来试试吧.
它不起作用.
无论videoGravity(在故事板或代码中),视频播放都会调整大小以适应,只有在我点按两次时才会填满屏幕.
我错过了什么?
另外,如果我presentMediaPlayerController使用Media Player Options 探索该方法,我会注意到一种奇怪的行为:
• WKMediaPlayerControllerOptionsAutoplayKey✅
• …