我正在使用 Xcode 7.2、WatchOS 2.1。我有以下问题
Base.lproj/Main.storyboard: iOS storyboards do not support target device type "watch".
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在编写 iPhone 和 Watch 应用程序。我计划支持将多个手表与手机配对的功能。
iPhone 和 Watch 应用程序都将读取和写入核心数据数据存储,我将使用WatchConnectivity它们来保持同步(使用transferUserInfo:)。用户将在一个设备上书写/口述某些内容,然后它会出现在另一台设备上。
我正在努力弄清楚如何支持多个手表。鉴于以下场景:
WatchB 如何与 Phone/WatchA 同步?
transferUserInfoWatchA 配对时的调用吗?transferFileAPI发送整个 sqlite 数据库(这似乎有点多)?当我观看WWDC 2015会话视频"WatchOS 2的WatchKit介绍"(13:29)时,我看到可以使用openSystem API直接在Apple Watch上拨打电话.如何在Swift中使用此API?
我已经阅读了下面的q/a,这很棒.这正是我在测试项目中所做的,它运行正常.
我现在已经创建了我的真实项目,但是在Watch扩展中,session: didReceiveApplicationContext:不会触发.
这是我的发送代码:
-(void)sendPlistToWatch:(NSMutableDictionary *)dictionary {
NSLog(@"%s", __FUNCTION__);
if ([WCSession defaultSession]) {
NSDictionary *applicationDict = @{@"Favorites.plist":dictionary};
[[WCSession defaultSession] updateApplicationContext:applicationDict error:nil];
NSLog(@"sent dictionary");
} else {
NSLog(@"not paired");
}
}
Run Code Online (Sandbox Code Playgroud)
这是手表上的接收代码:
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
if ([WCSession isSupported]) {
[self.session activateSession];
self.session = [WCSession defaultSession];
self.session.delegate = self;
}
}
- (void)willActivate {
[super willActivate];
}
- (void)didDeactivate {
[super didDeactivate];
}
- (void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext {
NSString *string = [applicationContext objectForKey:@"dictionary"];
NSMutableDictionary …Run Code Online (Sandbox Code Playgroud) 我有一个问题很可能是一个概念问题,但我希望有人可以指出我正确的方向.我正在尝试使用新的WCSession*didReceiveMessage*从我的WatchKit扩展中的iOS应用程序接收数据字典.当我打印收到的消息时,我正在接收数据,但我无法对函数外的这些数据做任何事情(例如填充WKInterfaceTable,这是我的最终目标).
InterfaceController.swift(WatchOS):
class InterfaceController: WKInterfaceController, WCSessionDelegate {
var session : WCSession!
var files = [String]()
@IBOutlet var fileTable: WKInterfaceTable!
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
startSession()
reloadTable()
}
private func startSession() {
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
print("activated session")
}
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
func session(session: WCSession, didReceiveMessage message: [String : …Run Code Online (Sandbox Code Playgroud) 我有一个适用于Watch OS的应用程序,它使用以下代码设置组的背景,图像位于WatchKit中的Images.xcassets中:
scalaImageName = [NSString stringWithFormat:@"scalaMHR%d", imageNumber];
[self.mainGroup setBackgroundImageNamed:scalaImageName];
Run Code Online (Sandbox Code Playgroud)
如果我在监视OS2下运行应用程序,我收到错误消息:MyApp WatchKit Extension [325:28425]无法在Watch上找到名为"scalaMHR1"的图像
手表OS2有什么变化吗?
我目前正在为watchOS 2更新我的应用程序,并且在设备之间的通信方面遇到了一些麻烦:之前我一直在使用共享的NSUserDefaults来启用Watch和iOS设备,以便独立地从一个App Group读取和写入多个值.
现在watchOS 2应用程序在Watch上本地运行,Watch Connectivity Framework取代了之前的通信选项,这似乎不再适用.但是,从我在参考文献中看到的内容来看,实现与WatchOS 1中使用Watch Connectivity相同的功能相当麻烦......
有没有其他选择让我创建某种容器/文件/数据库/我可以从我的Watch应用程序和相关的iOS应用程序访问和更新?
在我的中ExtensionDelegate,我想获取我的一个接口控制器的实例。我正在使用基于页面的导航。
例如,我可以这样做iOS:
if let controller = self.tabBarController?.viewControllers?[1] as? TimesController {
controller.myVariable = nil
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做watchOS?
我希望我的并发症能够通过Watch Connectivity从iPhone获取数据。我正在使用sendMessage即时消息技术。
我不希望在尝试获取数据时打开iPhone应用程序,因此这需要在后台进行。
在我的iPhone上的ViewController中:
import UIKit
import WatchConnectivity
class ViewController: UIViewController, WCSessionDelegate {
var session: WCSession!
override func viewDidLoad() {
super.viewDidLoad()
if WCSession.isSupported() {
self.session = WCSession.defaultSession()
self.session.delegate = self
self.session.activateSession()
}
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
if message.count != 1 { return }
if message["request"] != nil {
replyHandler(["response" : "data"])
}
}
Run Code Online (Sandbox Code Playgroud)
在我的ComplicationController中
var session: WCSession!
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void)) { …Run Code Online (Sandbox Code Playgroud) swift watchos-2 apple-watch-complication watchconnectivity wcsession
我已经在swift下开发了WatchOSExtension,是否可以将它连接到一个新开发的xamarin ios项目?
watchos-2 ×10
ios ×4
swift ×4
watchos ×3
watchkit ×2
apple-watch ×1
function ×1
phone-call ×1
session ×1
swift2 ×1
wcsession ×1
xamarin ×1
xamarin.ios ×1
xcode7 ×1