アプリ

Cordovaでのハイブリッドアプリ開発でつまずいたこと

こんばんわ!cowboyです☆

「接客英語アプリ」のiPhone版もアンドロイド版も更新し、iPad版もリリースしたので一段落です。

僕はCordovaを使ったハイブリッドアプリ開発(1つのコードでiOS・Androidの両方のアプリを開発する)の手法を取っているのですが、まあちょこちょこうまくいかず(特にiOS版)に詰まりましたよ(^_^;)

今回は(特にiOS版で)大きく詰まったところTop3を紹介したいと思います。

①Cordovaのサードパーティー製Admobプラグインはトラフィックを2%抜かれる。

CordovaでAdmob広告を載せるためにプラグインを導入するんですが、公式がないのでサードパーティー製を使うわけです。
ネットで検索すると日本語のサイトではcordova-admob-proがよく(というかほぼ)紹介されているんですね。
じゃあ使おうかと思って作者のGitHubのREADMEを読むと以下のように書いてます。

"You can use this plugin for free during trial purpose. If it earns less than $1000 for you, you can continue to use for free.

If use in commercial project, please get a license, or, you have monetized more than $1000 using this plugin, you are also required to: either get a commercial license ($20), or, no need pay but share 2% Ad traffic, read the License Agreement for details. As a commercial customer, you will be supported with high priority, via private email or even Skype chat."


みんな、よく英語読まないと。やられてますよ(笑)
20ドル払ってライセンスを買わないと、トラフィックの2%抜かれます。
まあ収益が1000ドルを超えないと抜かないって書いてますが、微妙ですね。

じゃあ違う人が作ったプラグインを使おうと探しましたが、他の方も「2%のトラフィックを寄付としてもらうよ!払いたくなかったら自分でコードとハックしてね!バルセロナから愛をこめて☆」みたいな感じで同じでした。

それならばプラグイン無しで自力でadmob SDKをcordovaに組み込むぜ!!と2日かけて取り組みました!!

挫折orz

というわけで現状はadmob-proをハックした人のプラグインを信じて使わせていただいています。
まじでグーグルさん、公式でプラグイン出してくれませんかね。安心して広告載せれません(^_^;)
とりあえずは解決(としよう)!

②iOSでfirebaseプラグインを実装するとエラーが生じる
Firebaseの解析を利用するためにfirebaseプラグインを組み込んだのですが、Androidでは何のエラーも吐かなかったのですが、iOSだと何故か実機でアプリをどうさせることが出来ません(エミュレーターなら起動する)。
以下のようなエラーが出て、SigningのTeamを正しいものに選択しても何故か認証が通りません。

Check dependencies
Automatic signing is unable to resolve an issue with the "○○○(アプリ名)" target's entitlements files.Remove the entitlements or switch to manual signing and resolve the issue by downloading a provisioning profile from the developer website.
Provisioning profile "iOS Team Provisioning Profile: ○○○◯(アプリのプロジェクト名)" doesn't include the aps-environment entitlement.
Code signing is required for product type 'Application' in SDK 'iOS 10.2'


めちゃめちゃ困った。調べまくっても何も情報がない。Stack Overflow(海外の技術者の掲示板みたいなもの)で調べてもわからない。同じようなエラーの対処法をしても全く治らないし、そもそも原因が違う。

Xcodeで色々いじってたらTARGET→Capabilities→Push NotificationsをONにしたら治りました。
Firebaseは通知を出したりできるので、ここがONになっていないとエラーがでるようですね。
Swiftでコーディングするときはpodを使うので、そのへんは自動でやってくれているようなので全然気づかなかった。
とりあえず解決!!

③iOSで読み上げ機能(tts)を利用する際に、実機でのみ正常に動作しない
さあ実際にコードが書き終わってエミュレーターでの検証も完了したので、実機テストということで、僕が唯一持ってるiOS製品、iPad Airで実行しました。
あれ?なんか、挙動が違う!!
エミュレーターでは読み上げ中に違う文章を読み上げさせようとすると、読み上げ途中の音声を停止して新たに読み上げ音声が再生されます。しかし実機では読み上げ途中に違う文章を読み上げさせようとすると、停止せずにそのまま読み切った後しばらく新しい読み上げ音声を生成しようとしません。
おかしい。
というわけでログを見るとエラーが出てますね。はい。

AVAudioSession.mm:1053:-[AVAudioSession setActive:withOptions:error:]: Deactivation an audio session that has running I/O. All I/O should be stopped or paused prior to deactivating the audio session.

これに関してはStack Overflowでもちょくちょくと話題になっていて、safari(つまりiOSのWebView)では音声再生中に別の音声命令(例えば停止や別の文章を読み上げさせる)を行うとエラーが起きて正しく動作しないとのこと。
その対処法の結論が「iOSのWebViewのバグだから諦めろ」でした(^_^;)
なんだと?WebViewのバグだと?じゃあUIWebViewじゃなくてWKWebView(こっちのほうがクラッシュとかが少ないらしい)に変えてみる!!

結果ダメでした。

なんてこった。エミュレーター上では予定通りの挙動をするのに実機でダメだなんで。。。

というわけで全部詰まったんですが、③だけが解決策を見つけることができませんでした。
なのでiOS版はhtml5・CSS3・JavaScriptによるハイブリッド開発を断念して、普通にSwiftで更新しました。
う〜ん、AndroidとiOSのアプリ同時開発ができると思ったんですが、うまくいかないですね(^_^;)
一応オーディオを扱わなければ問題なさそうなので、そういうアプリを開発するときはCordovaだけで開発したいと思います。

以上cowboyでした!!うぇいうぇいうぇい☆


記事が良かったなら↓をクリックして応援願いますm(_ _)m

Android版アプリ「Vibronome」「接客英語アプリ」配信開始!!

こんばんわ!cowboyです☆

少し前にCordovaによるハイブリッドアプリ開発に手を出したことを書きましたが、
とうとうAndroid版の「Vibronome」「接客英語アプリ」を配信開始しました!

先行していたiPhoneを元に再構成していますので、より使いやすくなっていると思います。


Vibronome

Vibronome-android.png
google-play-badge.png


接客英語アプリ


shot1_201702181746203f5.png shot2_2017021817462033e.png

shot3.png shot4_20170218174624602.png


google-play-badge.png

開発したアプリは自分で使いたいと思っていたものを自分で作ったものでして、
僕はAndroid使いなので、今まで自分で開発したアプリは自分で使えなかったんですよね(笑)
これでやっと自分で使えます(笑)

Cordovaは意外と簡単なのでガンガン開発できそうですね!

以上cowboyでした!
うぇいうぇいうぇいうぇい☆

記事が良かったなら↓をクリックして応援願いますm(_ _)m

和製英語アプリがウェブメディア「TREES」様にて紹介されました!!

こんばんわ!cowboyです☆

先週のことですが、久しぶりにボルダリングに行ったらお客さんで一杯でして、入場制限が掛かっていたので諦めて帰りました。
悲しかったです。。。

というわけで四国、高知から空間を地方を暮らしをデザインする体験型ウェブメディアのTREES様にて「和製英語アプリ」が紹介されました☆

TREES様和製英語アプリレビュー

ありがとうございます\(^o^)/


2/1にローンチしたばかりのウェブメディアですが、他の大手が扱わないような「ニッチでコア」な情報を取り扱っていくようでして、今後はウェブのみならず実イベントも展開する体験型ウェブメディアを目指していくとのことなので非常に楽しみですね☆

というわけで「和製英語アプリ」とともに「TREES-暮らしを拡張するウェブメディア」様にも注目ですね!!

以上cowboyでした!!うぇいうぇいうぇい☆

記事が良かったなら↓をクリックして応援願いますm(_ _)m

和製英語アプリがAppliv様にて紹介されました!

こんばんわ!cowboyです☆

さて先日配信したiPhoneアプリ「和製英語アプリ」!!

なんとAppliv様にてレビュー頂きました!!
ありがたい☆


記事はこちらです!!


そしてこのレビューに書かれているとおり、用例が少なかったのでバージョンアップもしました!!
用例が増えてくるとちょっと使いにくくなるので、近いうちにUIも変更したいと思っています!!


和製英語アプリ1  和製英語アプリ2

和製英語アプリ3  和製英語アプリ4

iOSDownload.png


以上cowboyでした!!うぇいうぇいうぇい☆

記事が良かったなら↓をクリックして応援願いますm(_ _)m


Cordovaによるハイブリッドアプリ開発について

こんばんわ!cowboyです☆

さて先日配信開始した「和製英語アプリ」!!


反響がありません!!(笑)

なので紹介動画を作って公開したので、ちょっとでも広まればいいなぁと思っています(^_^;)


そんなこんなでちょこちょことiPhoneアプリを作っているのですが、先日10年ぶりくらいに友人から連絡が来て、スマホアプリを作って欲しいと言われました。
個人的な話かと思いきや、会社からの依頼だったのでちょっとビビりましたが、話を聞くとそんなに難しくないので引き受けるかもです。というか企画段階から相談されたので色々案は出させてもらいましたが、立ち消えの可能性もありますが、、、。

僕は扱えるプログラミング言語はアップル社が開発したSwiftでして、MacのOSXとiPhoneやiPadのiOS用のアプリにしか使われていないんですよね(最近ではGoogleやFacebookが採用するとか話はありますが)。

なのでアプリ制作依頼がどうなるかまだわかりませんが、Android開発に使われているJAVAを勉強しようと色々準備していたら、数年前から一つのコードでAndroid・iOS両方のアプリを開発する方法があったようです。
去年Swiftを勉強し始めたときはAndroid端末の各メーカーごとに異なる仕様に対応するのが嫌だったのでAndroidは捨てていたのですが、なんか遠回りした気分です(^_^;)
簡単に言うとWebサイトを作るのに使われている言語、HTML5・CSS3・JavaScriptを使って両方のアプリを作る。



・・・ソッチのほうがいいじゃん!!

というわけで勉強しました!
ちなみに参考書はほぼないです(笑)
唯一参考になったのがこの「HTML5ハイブリッドアプリ開発[実践]入門」です。



既にHTMLでサイトを作っている人はこれを読んだらAndroid・iPhoneの両方のアプリが結構さくっと作れると思いますよ!!
最近本当に思うのですが、いろんなことの敷居が下がってきているので自分でやってみるのも面白いかもしれませんね☆

以上cowboyの近状でした!
うぇいうぇいうぇい☆

記事が良かったなら↓をクリックして応援願いますm(_ _)m