Rodhos Soft

備忘録を兼ねた技術的なメモです。Rofhos SoftではiOSアプリ開発を中心としてAndroid, Webサービス等の開発を承っております。まずはご相談下さい。

WWDC2017

iOS11の忘備録

まずQiitaを一読して後追いする。WWDC2017を個別にみていきたい。恐らくリンク先の堤さん等のまとめ(API Diffsから見る iOS 11 の新機能 #WWDC17 - Over&Out その後)
を読むほうが早い..。

以下作成中

レビュー催促ポップアップの規制

Apple、アプリ上でレビューを催促するポップアップを今後は規制
iphone-mania.jp

iOS10.3からSKStoreReviewController
これに一本化される。

MusicKit

iTuneの曲の再生、プレイリスト取得等
MusicKit - Apple Developer
qiita.com

DeviceCheck

qiita.com

アプリのデバイスごとの識別情報。アプリを消しても一緒に消えない個別情報。

MapKit機能追加

MKMarkerAnnotationViewが追加されたのが大きいような気がする。表示の優先順位とかもつけられるようになった。
qiita.com

WKWebView機能追加

cookie管理、カスタムリソース(端末内の画像とかをhtmlに入れられる)、コンテンツブロックが追加された。
qiita.com

Core ML

機械学習系、学習済みのものを使ったりできる。appleが幾つか学習済みデータのサンプルを以下で提供しているのでそれを使ってみるのが良いかも。
少し調べる必要がある。
d.hatena.ne.jp
Machine Learning - Apple Developer
Core ML | Apple Developer Documentation

Depth API

デュアルレンズを使った奥行き判定。AVCaptureDepthDataOutput。
d.hatena.ne.jp
AVCaptureDepthDataOutput - AVFoundation | Apple Developer Documentation

SiriKit機能追加

各種インテントが増えてる。公演のPDF参照。
INTransferMoneyIntent, INSearchForAccountsIntent, INCreateTaskListIntent, INAddTasksIntent, INSetTaskAttributeIntent, INSearchForNotebookItemsIntent,
INGetVisualCodeIntent,
developer.apple.com
SiriKit - Apple Developer
https://devstreaming-cdn.apple.com/videos/wwdc/2017/214bugobsy7xw94v/214/214_whats_new_in_sirikit.pdf

ReplayKit機能追加

RPScreenRecorderというデバイス画面の動画を取れるクラス(AVPlayerからはとれない。)にstartCaptureが追加された。
d.hatena.ne.jp
RPScreenRecorder - ReplayKit | Apple Developer Documentation

SceneKit機能追加

scncameracontroller 情報がない。
SCNCameraController - SceneKit | Apple Developer Documentation

ちなみにSCNCameraとは
SCNCamera - SceneKit | Apple Developer Documentation

ARKit

ARSCNViewやARSKViewは ARSessionを含む。Sessionを動かすにはconfigがいる。ARSessionConfiguration, ARWorldTrackingSessionConfiguration。
ARSession - ARKit | Apple Developer Documentation

WWDC2017ARKIT
developer.apple.com

ARKitはAVFoudationとCoreMotionを使う。ARSessionConfigを設定してARSessionをRunする。ARSessionはAVCaptureSessionとCMMotionManagerを使う。
現在のフレームがARFrame。
特定の位置等をARAnchorで付けたりできる。ARCameraにTracking stateなどの状態が入る(ARSessionから状態通知)。

シーン(場面)の理解としてどこが平面化の理解というのができる。configuration.planeDetection とかで指定しておく。hitTestが frame.hitTestでできる。

Renderingについては

SceneKit のARSCNView
SpriteKitのARSKView
メタルでCustom Renderingする
等がある。


dev.classmethod.jp


SceneKitはiOS8から使える簡易3D描画フレームワーク
qiita.com



サンプルコード
github.com
github.com


アニメーション

developer.apple.com

iOS10から導入されたUIViewPropertyAnimatorに
iOS11で
scrubsLinearly:、pausesOnCompletion:が加わる。

CALayerに.maskedCorners:CACornerMaskが加わる。

Foundation

developer.apple.com



キーパスが簡単に

 let age = ben[keyPath: \Kid.age]
 ben[keyPath: \Kid.nickname] = "Ben"

KVOも

let observation = mia.observe(\.age) {
}
Codableについて