• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Xcode 7.3 的 WCSession 问题

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:03:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

直升机

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

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

如果我传递值 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)
}

这是来自应用委托(delegate)的 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)
   }



Best Answer-推荐答案


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

开始 didReceiveUserInfo

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

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
    dispatch_async(dispatch_get_main_queue()) {

关于ios - Xcode 7.3 的 WCSession 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213857/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap