首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 7.3中的WCSession问题

Xcode 7.3中的WCSession问题
EN

Stack Overflow用户
提问于 2016-03-25 04:09:20
回答 1查看 156关注 0票数 2

Helo

在将Xcode更新到7.3版本之前,我有一个带有WatchOS 2应用程序的应用程序,手表应用程序将调用func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {,iOS应用程序将选择调用并插入传递的值。一切都很好。

但是,自从更新到Xcode 7.3之后,我注意到的一个问题是,在首次启动func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {应用程序时,只调用两次,如果该应用程序正在运行或处于后台,则该函数只调用一次。

如果我传递值1、5和10,而iOS应用程序没有运行,则会添加值1、5、10、1、5和10。但是,如果应用程序以任何形式运行,则会添加值1、5和10。

知道为什么吗?

下面是来自WatchOS端的代码,我也是这么想的,但是根据我的测试,它们只被调用一次。我做了很多测试,而这只是在iOS应用程序启动时才发生的,而不是当它在后台做出裁决的时候。

代码语言:javascript
复制
@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应用程序代码

代码语言:javascript
复制
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    if (WCSession.isSupported()) {
        print("xyz3")
        session = WCSession.defaultSession()
        session.delegate = self
        session.activateSession()
    }

.

代码语言:javascript
复制
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)
   }
EN

回答 1

Stack Overflow用户

发布于 2016-03-25 18:16:25

经过一整天的研究,我终于找到了答案。我应该用didReceiveUserInfo启动dispatch_async

这就修复了它,并提高了手表应用程序和iOS应用程序之间的通信速度。

代码语言:javascript
复制
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
    dispatch_async(dispatch_get_main_queue()) {
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36213857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档