I am using WCSession's `tranferUserInfo` to send data between the watch and the iOS app for info that needs to be handled when either product is in the background. This works 100% of the time on the simulator but never with actual devices.

By using breakpoints I have discovered that `func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject])` is never called in the background but is immediately called when the app is brought to the foreground. Clearly `session.transferUserInfo(data)` is being called but not received in the background state. Again running the exact same code but on the simulator works perfectly.

I am running iOS 9.3.2 and Watch OS 2.2.1. Clearly this function was meant to handle communications in the background state and thus I believe the simulator is working as intended. I tried wrapping both the sender and receiver in a `dispatch_async(dispatch_get_main_queue(), {` block, but to no avail. 

What am I missing about `transferUerInfo` and its seeming inability to work properly with background states?

FYI - breakpoint set at the beginning of `didRecieveUserInfo` is never hit until the app is brought into the foreground.

```
func transferInfo(data:[String: AnyObject])
    {
        dispatch_async(dispatch_get_main_queue(), {
            if #available(watchOSApplicationExtension 2.2, *)
            {
                if #available(iOS 9.3, *)
                {
                    if self.session.activationState == .Activated
                    {
                        self.session.transferUserInfo(data)
                    }
                    else
                    {
                        NSNotificationCenter.defaultCenter().postNotificationName("alertError", object: self, userInfo: ["error":"Failed to transfer"])
                    }
                }
                else
                {
                    self.session.transferUserInfo(data)
                }
            }
            else
            {
                self.session.transferUserInfo(data)
            }
        })
    }

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject])
    {
        dispatch_async(dispatch_get_main_queue(), {
            for delegate in self.watchCommsProtocols
            {
                delegate.watchCommsDidUpdateInfo!(userInfo)
            }
        })
    }

```