1

I'm trying to implement iOS Handoff with fetching bigger data via NSInputStream and NSOutputStream. When I successfully receive user activity in method application(_:continue:restorationHandler:) I call getContinuationStreams but it always fails with error:

Error Domain=NSCocoaErrorDomain Code=4609 "Handoff couldn’t be completed because the network is not available." UserInfo={NSUnderlyingError=0x17db43c0 {Error Domain=NSPOSIXErrorDomain Code=51 "Network is unreachable" UserInfo={NSLocalizedDescription=Connection lost}}}

Dictionary userInfo of NSUserActivity is not empty and is received fine.

I followed Apple's Handoff Programming Guide and this article.

Here is code sample how I create user activity:

func createUserActivity() {
    self.userActivity = NSUserActivity(activityType: self.userActivityType)
    self.userActivity?.supportsContinuationStreams = true;
    self.userActivity?.delegate = self
    self.userActivity?.becomeCurrent()
    self.userActivity?.needsSave = true
}

And in AppDelegate I receive user activity as follows:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    NSLog("continue userActivity %@", userActivity.userInfo!)

    if userActivity.supportsContinuationStreams {
        userActivity.getContinuationStreams(completionHandler: { (inputStream, outputStream, error) in
            if error != nil {
                NSLog("\(type(of: self)), \(#function) \(error.debugDescription)")
            } else {
                if let inStream = inputStream {
                    self.receivedData = NSMutableData()

                    self.currentActivityType = userActivity.activityType

                    self.inputStream = inStream
                    self.inputStream.delegate = self
                    self.inputStream.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
                    self.inputStream.open()
                }
            }

        })
    }

    return true
}

Parameters inputStream and outputStream are always nil.

What am I doing wrong? Does anyone have a clue?

jendan
  • 271
  • 4
  • 14

0 Answers0