とあるiOSの残念なバグ
動いていない自分のアプリを眺めてて、残念すぎるバグを見つけてしまったのでメモ。
関係ないけど、今日も動画を貼っておく
『とある科学の超電磁砲S』のOP
これを歌ってる人のPVにはタッチが出ていて、「とある双子の幽体離脱」状態だた。
fripSide - sister's noise [ANIMAX STUDIO MUSIX ...
さて、本日の本題に入ろうか
エラー的にはどっかでメモリが解放されてしまってて、
おまえの見たい先なんてねーよって言われてた。
そもそも、このアプリっていつ作ったんだっけと思いつつ、
ログをみると、
Application windows are expected to have a root view controller at the end of application launch
これ、なんだけかーと思って、AppDelegate.mを見ると、
こんな記述を見つけて、ios6からsetRootViewControllerとか書かないと
警告でるとかだったような思い、
[self.window addSubView:hogeViewController.view];
こう書いてみたら・・・・
[self.window setRootViewController:hogeViewController];
何事もなかったように、動き始めた。
激しく無駄な時間を過ごした、日曜日の夜。
タッチイベントをスルーとか
あるviewのタッチイベントをスルーしつつ、そのview上のボタンイベントを拾いたい。
例えば、viewAの上に透明なviewBをのせて、viewB上にbtnCを置くとか。
これ特別なことではないんだけど、
AndroidとiOSをいったりきたりしてると、よく書き方を忘れてしまうので。
*今日の息抜きMAD (もうすぐDVD1巻発売ですね記念)*2013/6/17現在
【MAD】俺の妹がこんなに可愛いわけがない 『これが私の生きる道』 - YouTube
viewをスルーしたいだけなら、これでも可。
ただし、view上のボタンもスルッと抜けてしまうはず。
userInteractionEnabled= NO;
そこで、これ。
オーバーライドしちまって、特定のviewだけふがふが。
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *view = [super hitTest:point withEvent:event]; if ( self == view ) { return nil; } return view; }
6月19日発売、『俺の妹がこんなに可愛いわけがない。 1(完全生産限定版) [Blu-ray]』
特典に、原作者書き下ろしの短編小説がついてくるとか。
Androidのwebview背景を透過でクンカクンカ
日々、AndroidやiOSをいったりきたりしつつ、
ちょいちょい、JSも差し込みで対応しながら、アプリつくってます。
今日は忘れがちな、webview背景を透過について。
やりたいことはActivityの画面遷移後でも、1つ前の画面を見えるようにしておきたい。
ラノベ最終巻12が出たばっかですし、
せっかくなので、黒猫のクンカクンカを貼っておきますね。
BD1巻出るまでイ㌔
- Activityの背景を透過しよう
<activity android:name=".hoge.FugaActivity" android:theme="@android:style/Theme.Translucent"/>
- webviewの背景を透過しよう
webView.setBackgroundColor(0);
これで万事解決!
- 作者: 伏見つかさ,かんざきひろ
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2013/06/07
- メディア: 文庫
- この商品を含むブログ (35件) を見る
GCMで複数のレシーブ様が登場したぜヒャッハー
今更ですが、C2DMからGCMへ移行したので、
気になったポイントを1つピックアップ。
その前に神猫さんがクルッとまわりますね
Pushサービスを複数利用できる仕様ではだと思うので、
https://developer.android.com/google/gcm/adv.html:Receiving Messages from Multiple Sendersを参照
n個のPushサービスに対し、アプリ内で1つのレシーバでokかなと思うけど、
もし、外部の既製品であるPushサービスを利用すると、
提供されるSDKにレシーバも入っていると思うのね。
そいつと、元々自分がGCMBaseIntentServiceを拡張してつくったレシーバで、
処理が競合してくるよね、何も考えないと両方が受信し始めて。
というわけで、僕はこんな処理で自分のsenderさんだけ対応するような実装してる。
@Override protected void onMessage(Context context, Intent intent) { String senderId = intent.getStringExtra("from"); //notification出す為にゴニョゴニョするんだと思う }
っていうのが、自信ないのでエントリを書いておくことにした。
Androidの位置情報がとれなくなった(非開発ネタ)
開発用のAndroid端末で位置情報が取得できなくなった。
3G回線を利用していないやつなので、
WI-FI基地局の位置情報か、GPS頼み。
WI-FI基地局の位置情報が急にとれなくなったとか言われても
確認がよくわからないので、GPSだけ確認してみた。
A-GPSの衛星軌道データがキャッシュされていて、
時間かかってるんじゃないかなー?と思い、
「GPS Status & Toolbox」ってツールで、
“メニュー”⇒“ツール”⇒“A-GPSの管理”でダウンロードを選択すればOK
これで大丈夫かなーと思ったら、やっぱりダメ。
なんとなく会社の非常階段に出て、リトライしたら10秒くらいで位置がとれた!
GALAXY S os2.2以外はね・・・。
ユー、Map Keyを取得しちゃいなよ
Android Maps API v1のAPI Keyを久々に新規に取得したのでめもめも。
仕事でAPI v1を使っていて、
(v2になればKey取得とかなかったような気もするけど)
サービスがまだv1なので開発機をかえる毎に取得しなおし。
そんなわけで、すぐに手順を忘れるのでメモる。
debug.key取得
HOME/.android/debug.key
これが無い場合は適当なIDEやantでアプリをbuildすると勝手につくられているはず。
keytoolで作成することも可能だけど、どうせIDEで開発するなら、
そいつに作成しておいたほうが無難なきがす。
md5を使うのでメモっておく
keytool -list -v -keystore ~/.android/debug.keystore
ちなみに・・・
keyのパスワードはandroidなので、自前で生成する場合は同じにしといた方がいいんでないかな。
下記、公式より抜粋。
Keystore name: "debug.keystore" Keystore password: "android" Key alias: "androiddebugkey" Key password: "android" CN: "CN=Android Debug,O=Android,C=US"
API Key取得
debug.keystoreが作成できたら、下記ページでterm踏みつつ、キーを生成する。
僕がハマったのは、なんかsha1sha1 と思って何度もsha1で入力して、よく見たらmd5だったとこくらい。
地味に生成サイトが見つからないって人もいるかも。
GoogleのAPI Key 生成サイト
keyが生成できたら、そいつを使ってアプリをビルドすれば終わり。
- 作者: 生路茂太,井芹洋輝,神原健一,長谷川孝二,松木晋祐,宮田友美,吉澤毅
- 出版社/メーカー: 秀和システム
- 発売日: 2013/02
- メディア: 単行本
- この商品を含むブログ (2件) を見る