直升机
在将 Xcode 更新到 7.3 版本之前,我有一个带有 WatchOS 2 应用程序的应用程序,手表应用程序会调用func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
并且 iOS 应用程序会选择调用并插入传递的值。一切都很好。
但是自从更新到 Xcode 7.3 后,我注意到一个问题,仅当 iOS 应用程序第一次启动时才func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
被调用两次,如果应用程序正在运行或在后台,则该函数只被调用一次。
如果我传递值 1、5 和 10 并且 iOS 应用程序未运行,则添加值 1、5、10、1、5 和 10。但是,如果应用程序以任何形式运行,则会添加值 1、5 和 10。
知道为什么吗?
这是来自 WatchOS 方面的代码,我自己确实想到了这一点,但根据我的测试,它们只被调用一次。我做了很多测试,这只会在 iOS 应用程序启动时发生,而不是在后台运行时发生。
@IBAction func ConfirmButtonPressed() {
let applicationDict = ["Amount out": self.AmountText ]// Create a dict of application data
//applicationDict = ["status": "0" ]// Create a dict of application data
WCSession.defaultSession().transferUserInfo(applicationDict)
}
这是来自应用委托的 iOS 应用代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
if (WCSession.isSupported()) {
print("xyz3")
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
…………
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
var status = false
var AmountUILabel = ""
status = false
AmountUILabel = userInfo["Amount out"] as! String
print(userInfo["Amount out"] )
let i = NSString (string: AmountUILabel ).doubleValue
let when = NSDate()
let list :[AnyObject] = controller.viewControllers!
let j = list[1].topViewController as! AllEntriesTableViewController
j.AddAmount(i , date: when, what: "---", status: status)
}