2016年02月09日

WWDC15 - 226 WatchKit Tips and Tricks

WatchKit Tips and Tricks
WWDC 2015 | App Frameworks | Session 226
39:40
https://developer.apple.com/videos/play/wwdc2015-226/

※WWDCセッション関係の記事は、セッション内容を要約して内容を伝えるのが目的ではない。各セッションビデオで何が話されているかの項目をテキスト化することで後で何かを調べたいときにどのビデオを見れば良いか判断する材料にするために書いている。

Apple Watchアプリケーション開発で注意すべき点

Watchアプリケーションが合間の時間に使われることが多い。操作をしてデータを待っている間に、腕を下ろしてスリープ状態になって数分後や数時間後に再起動されることが多い。そのような使われ方でもデータのロードが行える方法としてバックグラウンドタスクを使う方法を示している。これはiPhone内のデータを読み込む場合でも必要。

次にNotificationについて、スムーズにユーザーで情報を提示するためのテクニックについて述べている。

その他細かな内容もある。

[Data and Communication]
Networking
https request
Ask for a background task assertion
Hold background task assertion until request finishes
Default NSURLSession

Request a background task assertion -
NSProcessInfo.processInfo().performExpiringActivityWithReason("networkReq")
{ expired in
if !expired {
// we have a background assertion
} else {
// No background task assertion was given or we've out of time.
}
}
Execute block when called
- Block executes on an asynchronous queue

dispatch_semaphore
dispatch_semaphore_wait - queue to pauses execution
dispatch_semaphore_signal -

6:51〜 コードデモ

Accross Process
openParentApplication(reply:)
application(handleWatchKitExtensionRequest:reply:)
- Begin a background task for asynchronous work

or WatchConnectivity in watchOS 2

Shared data
make use of app groups in existing watchOS apps
use NSUserDefaults for state data, not model data
think of simplifying data model

Handoff
updateUserActivity(userInfo:webpageURL:)
System invalidates user activities automatically
- you can manually invalidate

[Interface Elements]
Prioritize content loading
- use dispatch_async() in willActivate()
Load fewer table cells up front
Update information that has changed

Interface Builderで画面作成するときに、1画面に表示する要素を1つのコントローラーに入れるのではなく、複数のコントローラーに分割して必要なコントローラだけロードする

Use proprtly sized assets from your server/app
Optimize images using setImageData()
Use asset catalog

2x - same size in both watch
38mm 2x
42mm 2x

PDF image - single vector / template image

Animated Images
Multiple animated images means more processing and rendering
Resuce size and FPS for animated images
Run animated images in reverse

backgroundGroup.startAnimatingWithImagesInRange(NSRange(location:0, length:15), duration: -1, repeatCount: 0)

Animation API in watchOS 2
- similar to UIView animations
- animate height, width, alpha, insets, and more

Text Input Controller
take users directly to voice dictation

presentTextInputControllerWithSuggestions(nil, allowedInputMode: .Plain, completion: {
})

[Notifications] 31:00〜
alert辞書のなかにtitleを含めれば、最初の警告画面で表示するので、それを頼りにユーザーはbodyを見るかどうか決定できる。
category辞書の名前と同じコントローラーを表示する
sound辞書の名前の音を鳴らす
→ ローカル警告でもコードで辞書を作成できる

static notificationが常に最初に表示される。

[Glances]
willActivate()
- Do full setup before willActivate() finishes
Reload deliberately
Limit number of alternate lauouts
use WKInterfaceDate


posted by 永遠製作所 at 21:12| 東京 ☀| Comment(0) | TrackBack(0) | WWDC | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック