頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


乗換アプリを乗り換えた

乗り換え案内のアプリを変更したってお話だよ。

引き蘢ってる俺はめったに電車に乗らないんだけど、この前久しぶりに電車に乗ったんだ。その時に使ったのがNAVITIMEの乗換ナビってアプリ。
これで調べるとこういう結果が出たんだよ。

乗換ナビの表示

これを見ると2以外はどれも途中で乗り換える列車が全席有料なのか?と思ったんだよ。特急サザンって一部が有料でも無料の席もあるんじゃないのかな、と思っていたんだけど普段乗らないからよくわからなかったんだ。あ、もちろん特急料金を払うつもりはないよ。
実際はやっぱり特急サザンでも無料のところがあるので乗れていたんだよね。ホント誤解を招く表記だよ。せめて一部座席指定有料、とか書いてくれればよかったのにさ。

そんなわけでこのアプリは削除。代わりに乗換ナビの前に使っていた駅すぱあとを入れておいたよ。ちなみに駅すぱあとで同じ条件で調べてみたら意図するような結果が出てたね。
スポンサーサイト






AdMobが原因でビルドできない

Xcode 4.5でAdMob 6.1.4を表示させようとしたらえらくはまったってお話だよ。

「赤ちゃんの成長グラフLite」ってアプリにはAdMobで広告を表示させているんだ。今回iOS 6&iPhone 5対応をしようと思ったんだけど、Xcode 4.5だと実機へのビルドさえできなかったんだ。
もともと入れてたAdMobのバージョンは6.0.1だから古いせいかな、とエラーメッセージを見て思っていたんだよ。

アプリをiPhone5に対応する場合の地雷ポイント一覧 | fladdict
↑こういう記事も見てたしさ。

で、AdMobのサイトへ行って最新版の6.1.4をダウンロードしてXcodeに入れてみたんだけど、どこをどうやってもビルドできないんだよ。

Apple Mach-O Linker Errorってのが出るんだ。もちろん、上のarmv7s非対応とか、Other Linker Flags に-all_loadを追加とか、pathを確認(古いのを消す)とかいろいろやってみたんだけど、それでもビルドできないんだよ。ううう、、、
泣く泣く涙を拭いながらGoogle先生に聞き続けていたらおなじみStack Overflowでこんなページがあったんだ。
linker errors when integrating admob sdk into iOS app - Stack Overflow
え?GoogleAnalyticsiOS_2.0beta2ってフォルダをまるごとを消しちゃえだと(6.1.4にはbeta3になってた)。

実際にそうしてみると、、、ようやく動いてくれたんだ。えらく時間を無駄にしちゃったよ。


iOS 6にしたらボタンが効かなくなった

iOS 6だとなぜかボタンやジェスチャーが機能しなくなったってお話だよ。

「赤ちゃんの成長グラフ」ってアプリをリリースしてるんだけど、iOS 6にするとデータを入力するページのある部分のボタンが動かなくなったんだ。

入力画面

↑この画面はUITableViewでテーブルを表示しているところ。このテーブルをぐぐぐーっと下へ引っ張ると、、、

入力画面を下に引っ張ったところ

↑隠れていたビューが表示されるんだ。ここにそうそう頻繁には使わないボタンを用意してるんだよ。テーブルをもう一度下に引っ張って指を離すかテーブルを上へドラッグすると元に戻って隠れるようになっている。
隠されてるviewはUITableViewオブジェクトのbackgroundViewプロパティに入れてるよ。
「赤ちゃんの成長グラフLite」って無料版もあるからどんな動作してるのか確認したい方はダウンロードしてみてね。

この隠れているボタン全部と隠れずに見えていた月の切り替えボタンがiOS 6にアップデートした後、反応しなくなったんだよ(一番上の左右にあるボタンはscrollViewと関係ないからか普通に動く)。あと、テーブルを左右にスワイプで月を切り替えられるんだけど、それも同じで反応しなくなったんだ(隠れているビューを表示している時だけ)。

こりゃiOS 6の不具合だな、そのウチ治るだろうってほったらかしにしておきたいところだけど、自分が買いたコードを見るとまあなんともひねくれた(?)書き方をしててさ。素直じゃないのかもしれない。
こりゃ対策しないとなあ、と単純なコードで確認したらいとも簡単に再現するんだよね。

こんな感じでUIScrollViewDelegateの各メソッドで処理してるんだ(loadView内でUIScrollViewオブジェクトの上にボタンを追加してるけど略)。
#define HEIGHT_TABLE_TOP 44.f

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    //ドラッグ終了時に引っぱりだしていたら表示/非表示の切替
    if (scrollView.contentOffset.y < -HEIGHT_TABLE_TOP) {
        isShow = !isShow;
    }
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    //戻らせないための処理
    if ( (isShow)&&(scrollView.contentOffset.y > -HEIGHT_TABLE_TOP) ) {
        [scrollView setContentOffset:CGPointMake(0.0f, -HEIGHT_TABLE_TOP) animated:NO];
    }
}
これは単純化したコードなので本当はもうちょっと複雑だけど引っ張りだして隠れているビューが見えるようにscrollViewを固定する、という点では同じなんだよ。まあやや強引かな。 こんな感じでscrollViewを止めていると、それに関わるイベントが伝えられないのか?これは困ったぞ。


iOS 6もXcode 4.5もやって来た!

iOS 6.0もXcode 4.5もやってきて開発者としてはいよいよ縦長対応どうするよ?ってお話だよ。

今朝方俺のiPhone 4SをiOS 6にアップデートしたよ。
Xcode 4.5も来てたのでアップデート。ようやくシミュレータで縦長iPhoneの動作確認もできるようになったね、、、というかGM版でできてたんだろうけど、今回はダウンロードしていなかったので今日初めて拝むことになったんだよ。
それにしても、、、縦長になってできたスペースは使い道に困るよね。新しく作るのならそれ相応に作るんだろうけど、iPhone 5以前の縦横比で作ってるわけでそれを変えようとしてもねえ、、、
実は内心縦長対応はしなくても表示されるんだからいいかななんて思っていたんだけどさ、やっぱり上下に黒いスペースができるじゃない。あれを見たらもうなんとも悲しくなって対応することにしたんだ。

縦長iPhoneで表示した場合の画像


うーん。このグラフ下のスペース、どうすりゃいいんだろう、、、?


Google AdWordsの10000円分無料クーポン

Google AdWordsから10,000円分ものクーポンが郵送されてきたってお話だよ。

以前、Google AdWordsを使っていたことがあったんだけど、いつの間にか使わなくなったんだよね。
そういう人たちにまた使ってもらおうってことで、こういうキャンペーンしてるんだろうな。

Google AdWords無料クーポン

さっそくプロモーションコードを入力してみたよ。

処理完了の画像

↑こんな画面が出るけどそうすぐには反映されなくて、、、と言っても数分後には10,000円残金が増えていたよ。10,000円分もくれるなんてさすがGoogle太っ腹だね。
願わくばこちらの残金をAdMobに回せればいいんだけどさ、、、だってAdWordsでiOSアプリの宣伝しようにもコンバージョン率がわからないから使わなくなったんだしねえ。




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.