投稿

ラベル(iOS develop)が付いた投稿を表示しています

Flutter + Firebaseでアプリ開発のチュートリアル

FlutterとFirebaseを使う方針が立ったので、具体的なアプリ開発に向けてFlutterを勉強しているときの覚書。 環境: Windows 10 Pro 64bit 1903, Flutter SDK v1.7.8, Android Studio 3.4.2 下記のチュートリアルを進める。 Write Your First Flutter App, part 1 | Google Codelabs Write Your First Flutter App, part 2 | Google Codelabs Firebase for Flutter | Google Codelabs 感想など 昔は一文字変えるだけでもビルドし直していたので、ホットリロードは感動する。 アプリ開発がウェブ開発と同じくらいやりやすくなってきた。 Dart言語もJavaScriptに似ているので全く気にならない。 「全てがWidget」の考え方が分かってきた。 あとは必要なときにGitHubにあるサンプルをみれば大丈夫そう。 firebase/quickstart-android: Firebase Quickstart Samples for Android | GitHub 【関連記事】 Firebaseを理解するためにウェブチャットのサンプルを試す Flutterでアプリ開発。サンプルアプリを試す

アプリ開発プラットフォームFlutterをMacにインストール

FlutterをWindowsにインストールすることは成功したので、iOS開発用に古いMac mini(Mid 2010)でも可能か試したときの覚書。 環境: macOS High Sierra 10.13.6, Flutter SDK v1.5.4, Android Studio 3.4.1, Xcode 10.1 公式サイトを参考に。 MacOS install  - Flutter 以下はWindowsからTeraTermで操作している。 SDKインストール SDKをダウンロードして展開 $ cd Downloads/ $ curl -O https://storage.googleapis.com/flutter_infra/releases/stable/macos/flutter_macos_v1.5.4-hotfix.2-stable.zip $ unzip flutter_macos_v1.5.4-hotfix.2-stable.zip ApplicationsディレクトリへインストールしてPATHの設定 $ mv flutter /Applications/ $ less ~/.bash_profile # Flutter export PATH=$PATH:/Applications/flutter/bin 反映して開発用バイナリデータをダウンロード。確認 $ source ~/.bash_profile $ flutter precache $ flutter doctor Warningになっているのをひとつずつ解決していく。 Android SDKの設定 Android Studioを最新にしてFlutterプラグインをインストール。 SDK ManagerからAndroid SDK 29をインストール。 Androidライセンスへ同意 $ flutter doctor --android-licenses これでAndroid toolchainにチェックマークが付いた。 iOS開発の設定 flutter doctorに表示されているコマンドを実行 $ sudo xcode-select --switch /Applications...

「Flutter」でAndroidアプリ、iOSアプリ開発計画

「犬猫家族アプリ」を再起動しようとしているときの覚書。 4年ほど前はAppcelator Titanium + Node.jsで作っていたけど、今度はFlutter + PHP7(WordPress)にしていく。 Flutterとは。 Googleが開発しているマルチプラットフォーム開発環境。2018年12月にFlutter 1.0がリリースされた。 Flutter - Beautiful native apps in record time Flutter - Wikipedia Flutterの特徴 記述はDart言語。 対応するプラットフォームは モバイルアプリ ウェブ デスクトップアプリ 組み込みアプリ で真のマルチプラットフォームを目指している。 その他ウェブから集めた情報など Dart言語はJavaScriptに似ているので敷居が低い ドキュメントやサンプルが充実していて開発者に優しい。 あとはとりあえずやってみることが大事。 【関連記事】 犬猫家族アプリのAMP+PWA化計画 KotlinでiOS開発は出来るのか調査 Appcelerator Titaniumで作った「犬猫家族」アプリ

KotlinでiOS開発は出来るのか調査

イメージ
最近 Axway Appcelerator Titanium で開発し続けることに不安を感じていて、KotlinでiOS開発は出来るのかと調べたときの覚書。 Kotlinはクロスプラットフォーム開発に力を入れていて、iOSの公式サポートを発表した。 KotlinConf 2017 Keynote レポート | TechBooster お正月休みに試せるような状況だと嬉しいな。 < Related Posts > Android Studio + Kotlinプラグイン

iOSのPush通知用証明書(Apple Push Notification Service)を更新

イメージ
iOSのPush通知するための証明書(Apple Push Notification Service: APNs)を更新したときの覚書。 新規作成する場合は前の記事を参考に Titaniumアプリでプッシュ通知(Push Notification)【iOS版】   1.証明書を新規作成 Member Center にアクセスして Certificates, Identifiers & Profiles → iOS Certificates → 新規作成 更新するApp IDを選択。証明書署名要求(CSR)は新規作成したときと同じものをアップロードして作成。 ダウンロードする。 最近は「APNs Production iOS」から「Push Notification Service」に呼び方が変わったみたい   2.PEMフォーマットに変換 Linuxサーバーで作業。ダウンロードした証明書は「aps_production.cer」 PEM形式に変更 # openssl x509 -in aps_production.cer -inform der -out 2016hoge_cer.pem 更新前と同じ秘密鍵と結合 # cat 2016hoge_cer.pem hoge_key-nopass.pem > apns.pem あとは本番サーバー上の証明書を上書きして終了。   < 2016/08/10 Modified > Mac上だけで完結するやり方で作業することにした。 APNs証明書更新手順 - Qiita Member Center でApple Push Services証明書を作成してダウンロード。MacでダブルクリックするとKeychain Access上で秘密鍵と関連付けられる。 証明書の名前は「Apple Push Services: com.hoge」 これをExport. p12形式は証明書と秘密鍵を含めることができる。 ターミナルでpem形式に変換 $ openssl pkcs12 -in hoge_cer.p12 -out apns_live.pem -nodes -clcerts 期限確認 $ openssl x509 -noout -d...

アプリを別のアカウントへ移行(譲渡)

イメージ
Androidアプリ、iPhoneアプリを別アカウントへ移行させたときの覚書。   目次 Androidアプリを移行 iOSアプリを譲渡   1.Androidアプリを移行 公式ヘルプを参考に 別のデベロッパー アカウントへのアプリの移行 - Google Play デベロッパー ヘルプ 「デベロッパー コンソールの登録に使用した取引 ID」が少し分かりにくい。 Googleペイメント でデベロッパー登録したときの取引ID。 別料金もかからずすぐに反映された。   2.iOSアプリを譲渡 下記サイトが参考になる。 iTunes - App Storeに上がっているアプリを譲渡する方法 - Qiita 。。。一週間経っても移行先のアカウントにアプリが表示されないため、サポートに問い合わせてみた。 その後2回ぐらいサポートに督促のメールを送って、申請から約1ヵ月後に移行先アカウントにアプリが表示された。 メンバーセンターのApp IDsも移行される。 「Provisioning Profiles」は新規作成する。 別料金はかからなかった。   < Related Posts > Titaniumアプリでプッシュ通知(Push Notification)【iOS版】 Titaniumで作成したアプリをApp Storeに申請してみた

Titanium + Socket.IO(WebSocket)について調査

イメージ
TitaniumでWebSocketを活用したリアルタイムアプリを作りたくて調査している時の覚書。 TiWSというTitaniumモジュールは管理する人が変わりながらメンテナンスはされているみたい。 omorandi/tiws | GitHub Socket.io 1.0には対応していないみたい。 Compatibility Socket.io 1.0 · Issue #9 · omorandi/tiws   Socket.IOにはiOS, Android用のクライアントライブラリが公開されているので、これらをTitaniumモジュールとしてラッピングしたい socketio/socket.io-client-swift | GitHub nkzawa/socket.io-client.java | GitHub   TitaniumモジュールでSwiftはまだ使えない?Titanium 4.0からはSwiftでも大丈夫になった感がある。 [TIMOB-18844] iOS: Swift is not supported for Extensions - Appcelerator JIRA   この前Google NextでFirebaseの話を聞いたので、こちらも気になったりしてる。 Firebase - Build Extraordinary Apps 準リアルタイムなバックエンド開発を支援するGoogleのFirebase Titanium - Firebaseを使ってリアルタイムサービス - Qiita   < Related Posts > Google Container Engineについて調査 TitaniumでWebSocketを使いたくてtiwsをビルドする アプリ向けのサーバーAPIは「REST」 or 「WebSocket」?

Appcelerator Studioを仮想環境にInstallして試す

イメージ
いきなり今の環境をアップグレードするのは恐いので、仮想環境のMacにAppcelerator Studioをインストールしたときの覚書。 ホスト環境:OS X 10.10.2, VMware 7.1.1 仮想環境:OS X 10.10.3, Xcode 6.3.1 Titanium SDK 4.0からはAndroid 2.3がサポートされないので、仕事で使っている環境は当分アップグレード出来ない。 Titanium SDK 4.0.0 Beta - 02 April 2015   目次 Appcelerator Studioをインストール Appcelerator Studioを起動 Android SDKをインストール ビルドしてみる   参考 Appcelerator Platform - Appcelerator Docs   1.Appcelerator Studioをインストール 公式サイトの「Get the latest Tools」からAppcelerator Studioをダウンロードしてインストール。というかコピーするだけ。 Welcome to the Appcelerator Platform 起動するとJava SE 6 runtimeが必要といわれるので、AppleのサポートページからJavaをダウンロードしてインストール。 Java for OS X 2014-001 | Apple Support   2.Appcelerator Studioを起動 起動するとセットアップが開始。node.js 0.10.37がインストールされた。 アカウントを入力してログインすると認証コードの入力が必要になる。登録したメールに送られる。     3.Android SDKをインストール 公式サイトからダウンロード。 Installing the Android SDK | Android Developers Android Studioは10.10をサポートしてないようなので、Stand-alone SDK Toolsをダウンロード。解凍したandroid-sdk-macosxをApplicationsに配置。...

XCode6にあげたらTitanium CLI(SSH経由)からSimulatorが起動しない

イメージ
開発環境を最新にしてからSSHでビルドコマンドを打つと下記エラーでシミュレーターが起動してくれない。 [INFO]  Launching iOS Simulator [ERROR] Project failed to build after 1s 455ms ちなみに直接Macのターミナルから実行すると問題なく起動する。 環境: OS X 10.10.1, XCode 6.1.1, Titanium SDK 3.4.1.GA WindowsからMacにSSHで接続している私としてはこれだけで開発効率がかなり落ちる。 下記サイトでXCodeの問題ということと解決するための方法が載ってた。 xctool fails to launch simulator and install application when running tests against XCode 6 Beta 5 · Issue #404 · facebook/xctool 方法としては別のSSHデーモンを起動してそちらから接続すればいいらしい。 起動スクリプトをダウンロード 。~/scripts/customsshdに置く。 スクリプトを読んで必要なディレクトリを作成 $ cd $ mkdir customkeys 鍵を生成するスクリプトもあるようなので実行。 $ chmod 755 scripts/customsshd $ ./scripts/customsshd install customkeysにSSHの鍵が出力される。 生成された公開鍵(ssh_host_rsa_key)をsustomsshdの「CUSTOM_ID_RSA_PUBKEY」へ代入している部分に貼り付ける。 SSHDデーモン起動。 $ ./scripts/customsshd TeraTermから接続してみる。 ポート番号:50111 ユーザー名:(Macのユーザー名) パスフレーズ:(なし) 秘密鍵:customkeys/ssh_host_rsa_key Titanium CLIでビルドしてみる。 $ ti build -p iphone -T simulator --sim-64bit --tall 無事シミュレーターが起動。 Macを再起動してもこのSSHDデーモンも起動し...

Titaniumアプリでプッシュ通知(Push Notification)【iOS版】

イメージ
アプリ側にプッシュ通知しようと調査したときの覚書。まずはiOSから。 開発環境: Mac OS X 10.9.4, Titanium SDK 3.3.0.GA サーバー:CentOS 6.5, PHP 5.4.32   参考サイト Subscribing to push notifications - Titanium 3.X - Appcelerator Docs push通知について | Don't Fall - Titanium Mobileユーザー会サポートBBS Apple Push Notification Services in iOS 6 Tutorial: Part 1/2 | Ray Wenderlich   目次 APNsとの通信下準備。証明書署名要求(CSR)を作成 iOS Dev CenterでPush Notification可能なApp IDを作成 App IDと証明書署名要求を提出して証明書を取得 Linuxサーバーで使いやすいようにPEMフォーマットに変換 プッシュ通知を受け取るデバイス用にProvisioning Profile作成 アプリにプッシュ通知がきたときの動作を記述 サーバーから通知テスト   1.APNsとの通信下準備。証明書署名要求(CSR)を作成 iOSの場合は Apple Push Notification service(APNs) へプッシュ通知したい情報を送ると各端末に自動でプッシュしてくれる。 APNsから信頼してもらうために署名要求を提出して、署名(サイン)してもらった証明書を取得する必要がある。 まずはMac上で証明書署名要求(CSR)を作る。 Keychain Accessを起動 Keychan Access → Certificate Assistant → Request a Certificate From a Certificate Authority...を選択 「User Email Address」「Common Name」を入力して「Saved to disk」を選択してContinue. パスフレーズを入力 実際はLinuxサーバーからAPNsにアクセスするので、証明書署名要求(CSR)を...

球形ロボット「Sphero」で猫様満足度アップを狙う

イメージ
面白そうなガジェットを見つけた。 Sphero 2.0 - connected toy | Sphero iPhone5sでハロを操れ!『Sphero 2.0』がいきなり日本で発売に   APIが公開されているので、動きを制御したり情報を取得して表示するアプリが作れる。 Sphero Documentation | Sphero   勝手に動きまわってにゃんこたちの遊び相手になってくれたら何と素晴らしいことか!時間を作って制御するアプリを作りたい。   < Related Posts > 猫が数日お留守番出来るように自動給餌器と自動給水器を買う 猫のトイレ臭い対策でデオトイレを買ってみる 猫を向かい入れるために猫用品を揃える

体重計とBluetoothで連携するアプリを作りたい

イメージ
スマフォと連携できる体重計があるか調査 。 AppleとGoogleがデベロッパーカンファレンスで健康管理のSDK, APIを強化すると発表したのでスマフォ+医療は何か出来そうな感じがする。 Apple - iOS 8 – Health Google Fit   下記製品と連携するアプリは作れそう。 健康製品セレクション | WellnessConected   BluetoothのHDP (Health Device Profile)というプロファイルに対応している機器ならアプリとの連携もしやすい。 Bluetooth - Wikipedia   私自身は体重管理しても嬉しくないけど、我が家のにゃんことわんこ向けに健康管理アプリを作るのは楽しいかもしれない。

iOSをDistributeするときにIDFAエラーで先に進めない

イメージ
いつものようにTitaniumで作成したアプリを公開しようとしたらValidationするときに下記エラーになった。 Improper Advertiseing Identifier [IDFA] Usage. Your app contains the Advertising Identifier [IDFA] API but you have not indicated its usage on the Prepare for Upload page in iTunes Connect. このエラーは新しいバージョンを追加するときに表示される質問 Does this app use the Advertising Identifier (IDFA)? に「No」と答えると「IDFA」のチェックが走るらしい。 でも、アプリ内で広告は表示してない。 Titaniumで作成したアプリで、もしかしたらFacebookモジュールで使っているのかな? ただIDFAの質問に対する回答を変更したくても出来ない。 新しく追加したバージョンも「Waiting for Upload」のまま削除できない。 とりあえずiTunes ConnectのContact Usから質問を送信(5月20日付)。 どうなるか。   < 2014/06/04 Modified > Facebook Moduleを使っているのが原因みたい。 [TIMODOPEN-391] Facebook module causing IDFA usage error on Xcode organizer validation - Appcelerator JIRA   < 2014/06/19 Modified > 約1ヶ月待っても返事がないので、tiapp.xmlのfacebookモジュールの部分を削除して再Validation + Submit <module platform="iphone">facebook</module> 無事完了したらiTunes ConnectのView Detail → Binay Details → Reject This Binaryをすると、再度「Ready to Up...

子育て支援アプリ「teniteo学園」をリリース

イメージ
去年、子育て情報サイト「 teniteo 」の今後の戦略についてプレゼンして作らしてもらったアプリの紹介。 まず、今までのウェブサイトとアプリの主な問題点 登録会員数の伸び悩み アクティブユーザー数が少ない 書き込みまでしてくれるのは一部のユーザー 愛知の地域情報が目立っていて他の地域の人が入りづらい   これを解決するために新しいアプリで実践したこと。 「学園」のイメージで仮想空間を作る アニメ調で可愛く 会員登録しなくても閲覧とコメント可能 アイコンを多用して直感的に使いやすく 掲示板機能に特化   出来たのがこれ。 teniteo学園 - Google Play の Android アプリ teniteo学園 - App Store の iPhone、iPod touch、iPad 用アプリ   学園のイメージを出しつつ使いやすいUIを考えるのに苦労した。 次はアプリのプロモーションを考えたい。   < Related Posts > 子育て情報サイト「teniteo」アプリをアップデート Titaniumを使ったアプリと苦労した事とかのまとめ2013年

[Titanium] アプリ名に日本語を含んでいるとDistributeするときにError

イメージ
tiapp.xmlのnameタグを日本語名にしただけでAndroidもiOSも開発は出来たけど、iOSをDistributeしようとしたときにエラーになった。 ちなみにAndroidはPlayストアへアップロードしても問題なかった。 環境: Titenium SDK 3.2.2.GA エラーはこれ。 参考サイト Internationalization of App Names | Appcelerator Blog Titaniumでアプリ名を日本語にする方法 | Titanium | nekosukoブログ   修正手順 1.各言語フォルダにapp.xmlを作る $ vi /i18n/jp/app.xml $ vi /i18n/en/app.xml <?xml version="1.0" encoding="UTF-8"?> <resources>     <string name="appname">日本語名のアプリ</string> </resources>     2.tiapp.xmlを編集 tiapp.xmlのnameタグはアルファベットで記述する。 アンダーバーを入れたらValidationのときに同じエラーになった。ハイフンとスペースは大丈夫だった。 さらにAndroidの場合は、「android:label」を指定しないと設定 → アプリケーション管理でのアプリ名がnameタグで指定した名前になる。 <android>   <manifest>     <application android:label="日本語名のアプリ">     </application>   </manifest> </android> ビルドすると/build/android/AndroidManifest.xmlが作成されるので確認できる。 参考サイトの記事ではAndroidManifest.xmlを設置する方法が書かれていたけど、tiapp.xml...

[Titanium Mobile]Performance改善のためApplicationの設計を見直す

イメージ
Android, iPhoneアプリが一段落したので、次期開発に向けてアプリの設計とより良いパファーマンスを得られる書き方など調べ直したときの覚書。 環境:Titanium SDK 3.1.3.GA まず公式ドキュメント Best Practices and Recommendations - Titanium 3.X - Appcelerator Docs アプリのサンプルも公開されてた。 Community app - Titanium 3.X - Appcelerator Docs でもこれ2年間更新されてない(SDK v1.8.1)ので、abcsWriterの方がいいかも。 appcelerator-titans/abcsWriter | github 両方とも「名前付き関数(named function)」を多用しているので無名関数(nameless function, anonymous function)とどっちがいいか調査。 nameless vs named function · jsPerf Are named functions or anonymous functions preferred in JavaScript? - Stack Overflow 名前付き関数の方が速いらしい。 var hogeFunc = function() {}; このような無名関数を基本使っていたのでショック。今後は名前付きにしよう。。。   < 2013/11/20 Modified > ChariTi というアプリが 非常に 参考になる。 lib/core.js, lib/http.js, utilities.jsとかヨダレが出そうになるぐらい。別記事で詳細を紹介する予定。   去年のCODESTRONG(カンファレンス)のビデオを見てみた。 Breakout session - iOS Internals and Best Practices - CODESTRONG 2012 今後気をつけること。 setterを使うよりプロパティでアクセスした方が速い "透明"はコストが掛かるので常に背景色を設定した方が速い   関連した記事も見つけた。これは...

iOSアプリをDistributeするときに120x120が必要になった

イメージ
Titanium Mobileで作成したアプリをストアに送信する「Validation」をしたときに下記エラーが出るようになった。 Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format. 120x120のアイコンが必要になったらしい。 環境: Titanium SDK 3.1.3.GA 参考にしたサイト。 Icons and Splash Screens - Titanium 3.X - Appcelerator Docs iOS Human Interface Guidelines: Icon and Image Sizes | iOS Developer Library   [iOS 7] iOSアイコンファイル早見表(2013/9) | Developers.IO   上記サイトを参考に Resources/iphone/appicon-60.png Resources/iphone/appicon-60@2x.png を用意したらValidationが通った。   < Related Posts > Titaniumで作成したアプリをApp Storeに申請してみた

Google Play, App Storeのアプリ画面を起動するQRコードを生成

イメージ
チラシを作成する際にQRコードを貼り付けて、読み込むとAndroidアプリ、iPhoneアプリをダウンロードできるアプリストアを表示するようにしたくて調査したときの覚書。 ちなみにQRコードを読み取るアプリをダウンロードしてスキャンするぐらいならアプリストアでキーワード検索した方が早い。。。   URIスキーム(URLスキーム)の仕組みを使うと起動するアプリをある程度制御することができる。 URI scheme - Wikipedia, the free encyclopedia   Google Playの「teniteo」アプリ を起動する場合 market://details?id=jp.teniteo.app   App Storeの「teniteo」アプリ を起動する場合 itms-apps://itunes.apple.com/jp/app/teniteo/id619969170   これのQRコードを生成する。下記サイトで無料で作れる。サイズも指定出来て便利。 QR Code generator - create QR Codes (for free) [logo, business card, vCard, t-shirt, mug] - goQR.me   ちなみにこの記事に付けている画像が実際に生成したQRコード。   チラシに必要な「Google Play」と「App Store」のロゴのベクトル画像は下記から手に入る。 App Store Marketing Guidelines - Apple Developer Android app on Google play vector in .EPS, .CRD, .AI format     < Related Posts > [Titanium] iOSとAndroidで地図アプリ(Google Maps)を起動 【Androidアプリ】バーコード読み取り「Zxing」をEclipseで使う

[Titanium] iOSとAndroidで地図アプリ(Google Maps)を起動

イメージ
アプリ内の地図と地図アプリを連携すると便利なので、パラメータを渡して起動する方法を調査。 環境: Titanium SDK 3.1.1.GA 参考にしたのは下記。 Google Maps URL Scheme - Google Maps SDK for iOS - Google Developers Apple URL Scheme Reference: Map Links Google Maps のパラメータ   実際書いたコードを下記に抜粋。 iOSの場合はグーグルマップアプリがインストールしてあれば、そちらを優先して開く。 Androidの場合はおなじみのアプリを選択する。 緯度と経度をクエリとして渡した方がピンが立つので分かりやすい。 if (this.isAndroid) {     // Google Map     url = [];     url.push('http://maps.google.com/maps');     //url.push('?ll=' + this.region.latitude + ',' + this.region.longitude);     url.push('?q=' + this.region.latitude + ',' + this.region.longitude);     url.push('&z=16');     Titanium.Platform.openURL(url.join(''));     return true; } if (this.isIos) {     // Google Map of Native App     url = [];     url.push('comgooglemaps://');     //url.push('?center=' + this.reg...

Titanium Studioで"L"のWarningを消したい

イメージ
Titanium Studioのバリデーション機能を使って構文チェックしているときに"L"(Titanium.Local.getString()のショートカット)がずっとWarning表示されるので非表示するやり方を調査。 環境: Titanium Studio 3.1.2 まずはバリデーション機能を有効にするやり方 Titanium Studio → Preferences → Studio → Validation JSLint Validatorにチェックを付ける。 プロジェクト内を全て再チェックしたい場合は、Project → Clean...   'L' was used before it was defined. がたくさん表示されて見にくいので、フィルターの設定をする。 Titanium Studio → Preferences → Studio → Validation JSLint Validatorを選択して、下記Filterを追加。「Missing 'new'.」はお好みで。 Missing 'new'. 'L' was .+ Strictモードで書いていると未定義の変数があるだけで落ちてしまうので(Android)、Titanium Studioのバリデーション機能は便利。 ファイルの先頭にJSLintのオプションを記述することも出来る。詳細は JSLint: The JavaScript Code Quality Tool /*jslint eqeq:true, nomen:true, devel:true, plusplus:true*/   < Related Posts > [Titanium Mobile] Strict ModeとJSLintで統一性のあるCoding Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集