2014-10-24

SSHでサーバーに接続できなくなって焦った。どうやらパーミッションがおかしくなっていたようだ。

$ cd /etc/ssh/
$ sudo chmod 600 ssh_host_dsa_key
$ sudo chmod 600 ssh_host_ecdsa_key
$ sudo chmod 600 ssh_host_rsa_key

これで治った。

2014-10-10

HTMLで全画面表示(height: 100%)

HTMLで高さを画面全体の100%にしたいときは、親要素にも height:100%; を指定しておかないといけない。
つまり、
html, body { height: 100%; }
という具合にCSSでやっておかないと、いきなりdivとかで height:100% にしても効かない。

2014-10-06

エラー: You are not registered as an Apple Developer

You are not registered as an Apple Developer.  Please visit the Member Center to register.
https://developer.apple.com/membercenter

とかいわれてアップロードできない。

Xcodeで、Preferences(設定)のAccountsタブに、2つアカウントが登録してあって、そのうちの1つはデベロッパー登録していなかった。そのアカウントを消して、ゴチャゴチャやっていたらちゃんとアップロードできるようになった。

2014-10-05

UIPopoverPresentationController: _UIAlertControllerActionSheetRegularPresentationController should have a non-nil sourceView or barButtonItem set before the presentation occurs.

UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController  should have a non-nil sourceView or barButtonItem set before the presentation occurs.

というようなエラーが出てiPadが落ちる。なんだろうってことで検索。

StackOverflowでこんなページに行くつく。
activityViewController.popoverPresentationController.sourceView = parentView;
 
ってやれよということらしい。

やってみたら落ちなくなったけど、ポップオーバーの表示位置が左上で変。真ん中に来て欲しい。 これはやり方がよくわからないんだけど、別にどうでもいいかという気になってきた。

2014-10-02

GoogleMobileAdsSdkiOS-6.12.0 でビルドエラー

iOS用のAdMob SDKの最新版が、6.12.0 になっていた。で、これをアプリに組み込んでビルドしてみたらエラーになる。

日本語のページだとまだ更新されていないのだが、英語ページをみると、iOS8で追加された次の2つのFrameworkを組み込まないといけないらし。
  • EventKit
  • EventKitUI
 英語ページはURLも変更されていて、日本語ページから言語に「英語」を選択しても表示されないので注意が必要。

2014-09-25

Android4.4のWebViewでshouldOverrideUrlLoadingが呼ばれない

Android4.4(KitKat)から、WebViewでChromeが使われるようになった。これとともに、shouldOverrideUrlLoadingが呼ばれないという問題が起きていた。

原因の1つは、aタグのhref属性に、不正な形式のURIが指定されているというもの。<a href='share-content'> というようになっているとshouldOverrideUrlLoadingが呼ばれない。これはたとえば、<a href='intent:share-content'> というようにしなくてはいけない。

もう1つの原因は、webview.getSettings().setSupportMultipleWindows(true) と指定しており、リンクが target='_blank' となっているもの。target='_blank' をやめるか、webview.getSettings().setSupportMultipleWindows(false) にしなくてはいけない。なお、これはデフォルトでfalseなので明示的に指定しなければ問題ない。

nendの広告を、WebView内に表示していたのだが、これが反応しなくなっていて困った。

2014-09-24

AndroidでBitmapをWebViewに表示する

Data URIスキーマを使えば、AndroidのWebViewにBitmapを表示することができる。つまり、imgタグのsrcに、「http://」で始まる画像の場所を書くのではなくて、「data:image/png;base64,」のようにして始まる画像のデータを埋め込む。

たとえば、Bitmap iconがあったとして、
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    icon.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.toByteArray();
    String imgageBase64 = Base64.encodeToString(byteArray, Base64.NO_WRAP);
    String imageSrc = "data:image/png;base64," + imgageBase64;
    String htmlTag = "<img src='"  + imageSrc +  "'/>";
みたいにやる。
Base64にエンコードするときは、Base64.NO_WRAPをしてやらないとダメ。

can't find referenced class android.view.accessibility.CaptioningManagerを直す

Androidのproguard関連のエラー。AdMobを更新したらエラーで失敗するようになった。「com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager」と言われる。

「You may need to specify additional library jars (using '-libraryjars').」と出力されていたが、この方法では直らなかった。

プロジェクトのビルドターゲットを、Android4.4.2にしたら直った。AndroidManifest.xmlのandroid:targetSdkVersionのことではなくて、eclipseのプロパティで設定するやつ。