React Native Tech Blog

supported by maricuru (旧maricuru tech blogです)

【React Native】Expo SDK v28.0.0の変更点まとめ

先日Expo SDKのv28.0.0がリリースされました。
大きな変更もあったようなので、変更点をまとめてみます。

Expo SDK v28.0.0 is now available – Exposition

AndroidのtargetSdkVersionが26にアップデートされました

Androidの方針で、今後新規リリース、及びアップデートするアプリはAPIレベル26(Android 8.0)以上をターゲットにする必要があります。
詳細はコチラ→ 2018年8月からtargetSdkVersionをAPIレベル26(Android 8.0)以上にする必要がある - Qiita

それにExpoが対応した形のようです。

このAndroid8.0対応に伴い、以下3点の大きな変更があります。

Android notification channelsのサポート

6月上旬以降にexp build:androidでビルドしたアプリでは、
LocalNotificaitonオブジェクトのsound, vibrate, priorityのフィールドが、 またPush Notificationのsoundフィールドが無効になります。

これらのフィールドを利用していた場合は要注意ですね。
またこの変更は、ビルドサーバー側の変更なので、Expo SDKが22-27の場合でも影響を受けるようです。

Breaking Change Coming to Android Apps – Exposition

Expo SDK 28ではNotification Channels機能が導入され、これを利用するとsound, vibrate, priorityのchannelごとに指定できるようです。

もしExpo SDK 28にアップグレードしたくない場合は、Expo SDK 22-27の更新版もリリースされるので、これを利用するとNotification Channelsが利用できるようになるとのことです。

Android adaptive launcher iconsのサポート

Android 8.0でAdaptive Iconというものが登場しました。
おしゃれなアニメーションを実現できるようです。

3分で分かる?Android OのAdaptive Iconに対応しよう - Qiita

adaptiveIconのファイルがある場合は、app.jsonandroid.adaptiveIconに指定することで反映できます。

Expo SDK 22-27を使っていて、何もしない場合でも、次回のビルドでは強制的にadaptiveIconになります。
一度exp build:androidでapkをビルドして、どんな見た目になるか確認して、必要であればadaptiveIconを作成して差し替えることをおすすめされています。

GCMが廃止されFCMに

Googleの方針でGCMは来年に廃止され、FCM(Firebase Cloud Messaging)に移行します。
Expoもこの流れに適応した形です。

FCM対応のためにすることはコチラ↓に書かれています。
Using FCM for Push Notifications - Expo Documentation

現状GCMも動いてるようですが、いつ完全に廃止されるのかはよくわからず…汗
なる早で対応しろ、ってことですかね。

iOSのStoreReview APIに対応

よく見る「このアプリが気に入ったら評価してください!」 のダイアログを表示できるようになりました。

昨年くらいからiOSの規約で、公式で提供されるSKStoreReviewControllerAPIを使わないとダメになっています。
ExpoがそのSKStoreReviewControllerをラップしてくれました。

これはナイスアップデート♪ StoreReview - Expo Documentation

ARKit APIが更新

Expo.ARでARKitの全てのAPIが使えるようになりました。
ちなみにExpo.ARはExpoクライアントアプリでは動きますが、スタンドアロンでビルドしたいときはdetatchしないといけないとのこと 汗

その他

カメラの改善、react-native-gesture-handler の更新、また細かいバグの修正は色々あります。

最後に

ちなみにこのSDK 28、特にiOSレビューダイアログはよいな!と思いアップデートを試みたのですが、
React Native 0.54〜の「日本語がちゃんと入力できない」バグがネックになりアップデートは断念しました (泣)

プルリクはあるっぽいんですが、早くマージされないかな…

[iOS][TextInput] Fix controlled TextInput for Chinese (and other languages) by magicien · Pull Request #18456 · facebook/react-native · GitHub