Apple Watch のコンプリケーションを更新しています。しかし、session.transferCurrentComplicationUserInfo(userInfo)
iOS で呼び出していると、アプリがほんの一瞬、場合によってはそれ以上フリーズします。ドラッグ ジェスチャまたはアニメーション中の場合は、目立ちます。
どうすればこれを回避できますが、それでも合併症を更新できますか?
追加のコンテキスト
これは、更新するための合併症を呼び出す方法です
private var validSession: WCSession? {
if let session = session where session.paired && session.watchAppInstalled {
return session
}
return nil
}
func updateApplicationContext(userInfo: [String : AnyObject]) {
if let session = validSession {
if session.complicationEnabled {
do {
session.transferCurrentComplicationUserInfo(userInfo)
}
}
}
}
興味深いことに、同じsession.updateApplicationContext(userInfo)
ことをしてもフリーズは発生しません (もちろん、合併症も更新されません)。
func updateApplicationContext(userInfo: [String : AnyObject]) {
if let session = validSession {
do {
try session.updateApplicationContext(userInfo)
} catch let error {
print("[Update] \(error)")
}
}
}
また、アプリのプロファイルを作成しようとしています。残念ながら、Profiler の実行中に watch 拡張機能から iOS アプリに切り替えるのに問題があります。(これに関するヒントも大歓迎です) おかしなことに、私は一度それを行うことができましたが、時間プロファイラーでしばらくフリーズがゼロのアクティビティとして表示されたことを覚えています。奇妙なことにsession.transferCurrentComplicationUserInfo(userInfo)
、フリーズの始まりではなく、最後に の呼び出しを見つけました。不可解。
これが役立つことを願っています。私にとって、これはまだかなり混乱しています。アイデアをいただければ幸いです。