Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Expoで開発してアプリを公開して得られた知見 / RNM6
Search
pochi
July 12, 2017
Programming
3
1.8k
Expoで開発してアプリを公開して得られた知見 / RNM6
React Native Meetup #6での発表資料です
pochi
July 12, 2017
Tweet
Share
More Decks by pochi
See All by pochi
React Nativeで作ったアプリでRedux-Sagaを使ったので,その話 / TOM Internal Developer Session #7
pchw
0
2k
Firebaseでラクラクリアルタイムアプリ
pchw
0
1.3k
MongoDB族のための組み込み軽量DB NeDB
pchw
0
1.4k
月刊ライトニングトーク2014年8月号: MEAN 祭り資料
pchw
0
4.3k
Synth - 東京Node学園2014
pchw
0
4.3k
RubyMotion 1.15で追加されたtest周りの話
pchw
1
3.1k
Other Decks in Programming
See All in Programming
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
660
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2k
動作確認やテストで漏れがちな観点3選
starfish719
5
470
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
140
チームの立て直し施策をGoogleの 『効果的なチーム』と見比べてみた
maroon8021
0
150
AWS Lambda functions with C# 用の Dev Container Template を作ってみた件
mappie_kochi
0
200
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.5k
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
2.1k
ISUCON14公式反省会LT: 社内ISUCONの話
astj
PRO
0
130
rails newと同時に型を書く
aki19035vc
6
730
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
1
160
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
310
Featured
See All Featured
BBQ
matthewcrist
85
9.4k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
590
A Modern Web Designer's Workflow
chriscoyier
693
190k
Unsuck your backbone
ammeep
669
57k
Practical Orchestrator
shlominoach
186
10k
A designer walks into a library…
pauljervisheath
205
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Done Done
chrislema
182
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Transcript
Expoで開発してアプリを 公開して得られた知見 React Native Meetup#6 July 12, 2017
• ぽち@pchw • https://github.com/pchw • https://twitch.tv/pchw • SW2036-0981-2522 イントロ
イントロ • quickAnnict • Vainglory大会カレンダー
[ピーアール] エンジニア ボシュウ • Tokyo Otaku Mode inc. • オタク関連の全世界向けeコマース・クラウドファンディング・
ニュース・コンテンツ投稿とかのプラットフォーム • ショッピングカートから裏側の倉庫のシステムまで自前 • Shibuya(JP)/Portland(US)/Maihama(JP) • Node.js - MongoDB - Vue.js - etc.. • http://bit.ly/tom-engineer
None
Expo - expo.io
シツモン
None
None
None
None
None
CRNA と Expo
{ "expo": { "sdkVersion": "18.0.0" } } { "expo": {
"name": "18", "description": "An empty new project", "slug": "18", "privacy": "public", "sdkVersion": "18.0.0", "version": "1.0.0", "orientation": "portrait", "primaryColor": "#cccccc", "icon": "./assets/icons/app.png", "loading": { "icon": "./assets/icons/loading.png", "hideExponentText": false }, "packagerOpts": { "assetExts": ["ttf", "mp4"] }, "ios": { "supportsTablet": true } } } CRNA Expo
None
None
None
Expo を使うと楽!
Accelerometer Gyroscope Fingerprint - TouchID Location Notifications Permissions Pedometer -
Core Motion ScreenOrientation Facebook/Google Asset AV/Audio/Video Svg Font GLView BlurView Contacts DocumentPicker ImagePicker BarCodeScanner MapView Util KeepAwake Constants LinearGradient takeSnapshotAsync SQLite Lottie -Animation Amplitude/Segment - analytics Branch - linking FacebookAds Expo SDK
Expo の欠点
Native Modules が使えない
expo で使えるnpm packageか?
Check npm package • README.md • Getting Started • Installation
• $react-native link • $rnpm link
Check source code
Check peerDependencies (package.json) "peerDependencies": { "react-native": ">=0.43.0", "react": ">=16.0.0-alpha.3", "react-native-vector-icons":
"~4.1.1" },
OK • @expo/vector-icons • react-native-branch • react-native-fbads • react-native-maps •
react-native-svg
どうしても途中で Native Modulesが必要に
$exp detach
$exp detach • ExpoKitとしてExpoのライブラリの機能は使える • Push Notificationsとかはダメ • Expo XDEは一応使える
• react-native run-ios でええやん • exp publishでテスト不可に • XCode/Android Studioでビルド
OAuthとか
None
Deep link
Deep link import { Linking } from 'react-native'; const LINK_URI
= Expo.Constants.linkingUri; : componentDidMount() { Linking.addEventListener('url', this._lnk.bind(this)); } _lnk(event) { let queryString = event.url.replace(LINK_URI, ''); const responseObj = qs.parse(queryString); const code = responseObj.code; this.getToken(code).then(…) }
Deeplink on Real device (app.json) "expo":{ "scheme": "qani" }
Expo.Constants.linkingUri • expo app内 • exp://exp.host/@pchw/*****/+ • Standalone Apps •
qani://+
None
ビルド→実機チェック→ストア申請
ビルド Building Standalone Apps
Configure app.json(iOS ver) "name": "foo", "icon": "http://Ͳ͔ͬ.com", "version": “0.0.1”, "ios":
{ "bundleIdentifier": "com.bar.foo", "buildNumber": "1" },
$npm i -g exp $exp login $exp build:ios
None
$ exp build:status
None
実機チェック
None
None
初期ロードの制約 > The very first load cannot be offline
isRemoteJSEnabled: falseは "ios": { "isRemoteJSEnabled": false, },
exp build:ios ⊇ exp publish
まとめ • Expoはとても便利 • なるべくNative Modulesを使わない • どうしてもダメなら覚悟を決めてdetach • expo上でもdeep
linkは確認できる • isJSRemoteEnabledはtrueのままの方が良い