菜鸟教程小白 发表于 2022-12-13 09:05:52

ios - 多个 View Controller 中的 WatchConnectivity session


                                            <p><p>我正在使用 watchOS 2 开发 watch 应用,其父应用在 iOS 9 测试版上。我正在使用 <code>WatchConnectivity</code>session 将数据从 Apple Watch 传递到 iPhone。我需要在 2 个不同的 ViewController 文件中进行 session ,那么在每个 ViewController 中启动新的 WCSession 并使用它们有什么问题吗?</p>

<p>基本上我正在尝试使用 <code>performSegueWithIdentifier</code> 从一个 ViewController 导航到另一个 ViewController ,当我将它放入 <code>viewDidLoad</code> 时它工作正常,但只要我放入它在 session 方法中,它开始中断,我怀疑它必须与 WCSessions 做一些事情。</p>

<p>以下是我试图导航的代码部分:</p>

<pre><code>- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary *)message replyHandler:(nonnull void (^)(NSDictionary * __nonnull replyMessage))replyHandler {
    NSString *msg = ;
    // NSDictionary* replyValues =@{@&#34;session&#34;:@&#34;established between phone   and watch&#34;};
    if () {
      isWatch = true;
      ;
    }
    // NSUserDefaults *prefs = ;
    // ;

    //replyHandler(replyValues);
}
</code></pre>

<p>谢谢!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>WCSessionheader 中 WCSessionDelegate 部分上方的注释指出:</p>

<blockquote>
<p>----------------------------- WCSessionDelegate -----------------------------</p>

<p>The session calls the delegate methods when content is received and session
    state changes. All delegate methods will be called on the same queue. The
    delegate queue is a non-main serial queue. It is the client&#39;s responsibility
    to dispatch to another queue if neccessary.</p>
</blockquote>

<p>因此,如果您想更新 UI(并且您正在使用 UIKit),则必须在调用 UI 更新方法之前调度到主队列。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 多个 ViewController 中的 WatchConnectivitysession ,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31488391/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31488391/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 多个 View Controller 中的 WatchConnectivity session