AndroidとiPhoneで使えるURLスキーム起動&アプリ未ダウンロードならストアへリダイレクトするJavaScriptサンプルコード

Android と iPhone で使える URL スキーム起動&アプリ未ダウンロードならストアへリダイレクトするJavaScriptサンプルコードをご紹介します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>URL scheme / Redirect Test</title>
 
    <script type="text/javascript">
    var userAgent = navigator.userAgent.toLowerCase();
 
    window.onload = function(){
 
      if (userAgent.indexOf("android") > -1) {
        // Launch myapp via URL scheme
        launch_frame.location.href= "myapp://";
 
        setTimeout(function(){
          // Open App DL page in Google Play
          location.href= "http://market.android.com/details?id=com.example.myapp";
        } , 500);
      } else if (userAgent.search(/iphone|ipad|ipod/) > -1) {
        // Launch myapp via URL scheme
        launch_frame.location.href= "myapp://";
 
        setTimeout(function(){
          // Open App DL page in iTunes Store
          location.href= "itmss://itunes.apple.com/us/app/myapp/id123456789?ls=1&mt=8";
        } , 500);
      }
 
    }
    </script>
 
  </head>
 
<body>
  <div style="width:0; height:0; overflow:hidden;">
  <iframe id="launch_frame" name="launch_frame">
  </iframe>
  </div>
</body>
 
</html>

QRコードの仕様、作成サービスまとめ

QRコードの仕様や作成サービスについて参考になったリンクをまとめました。

QRコード作成サービス

Google Chart API 経由でQRコードを作成できます。

Google Chart Tools: Infographics – Infographics (Deprecated) — Google Developers

Micro QR Code も作成できるサイト。出力形式も、PNG, PDF, SVG, EPS, SVG など多数サポートしています。

QR Code and 2D Code Generator | Kerem Erkan

QRコードの仕様について

FAQ|QRコードドットコム|株式会社デンソーウェーブ

QRコード作成 for ビジネス:FAQ

QRコード以外に、マイクロQRコードという規格もあります。文字数が少なくてQRコードのサイズを小さくしたい場合はこれを使うのも手です。

マイクロQRコード|QRコードドットコム|株式会社デンソーウェーブ

[Android] Application#onCreate は Activity, Service, Receiver オブジェクトが生成される前に呼び出される

Android アプリ開発にて、Application#onCreate は Activity, Service, Receiver オブジェクトが生成される前に呼び出されるみたいです。

public void onCreate ()

Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.
Implementations should be as quick as possible (for example using lazy initialization of state) since the time spent in this function directly impacts the performance of starting the first activity, service, or receiver in a process. If you override this method, be sure to call super.onCreate().

[引用元]:Application#onCreate() | Android Developers

例えば、Application#onCreate メソッド内に Google Analytics のアクセス解析処理を書いてたりすると、Service や Receiver オブジェクトが生成される度にトラッキングされてしまいます。

このせいで、アクティブユーザ数やセッション数が異常値になってしまったりするので注意が必要です。

[GitHub] Private リポジトリの共有設定方法

GitHub の Private リポジトリの共有設定をどこからやればいいか分かりにくいので、ご紹介します。

GitHub

続きを読む

[SSH] ~/.ssh/config で複数ホストへのSSH接続を管理しよう

SSH接続先をいちいちコマンドで打つのは面倒なので、 ~/.ssh/config で複数ホストへのSSH接続を管理しましょう。

参考情報

SSH_CONFIG (5)

~/.ssh/config で簡単に複数ホストへのSSH接続を管理する – すぱぶろ

[iOS] Run Script を Release ビルドのときだけ実行する方法

iOS アプリ開発で、Run Script を Release ビルドのときだけ実行する方法をメモ。

下記のように、CONFIGURATION の値が Release のときだけ、if 文の分岐を実行するように書けば OK です。

if [ "${CONFIGURATION}" = "Release" ]; then
  echo Do something really release-like
fi

参考情報

xcode – How can I limit a "Run Script" build phase to my release configuration? – Stack Overflow

[iOS] Google Analytics でキャンペーンのトラッキング

iOS アプリで、Google Analytics でキャンペーンのトラッキングをする方法をメモ。

Campaign Measurement – iOS SDK – Google Analytics — Google Developers

Google Analytics SDK を使ったスマホアプリのトラッキング|コラム アユダンテ株式会社

実装方法は、上記のサイトを見て下さい。

キャンペーンのトラッキングをするためには、アプリだけでは完結せず、初回起動後に一度、Safariのブラウザを開く必要があります。

たまに、初回起動時にそういう変な挙動をしているアプリがあれば、それはどこ経由でダウンロードしたのか?などの情報を取得していると思って下さい。

個人的には、この挙動が嫌なので Google Analytics でキャンペーンのトラッキングはしないことにしました。

[iOS] Google Analytics 2.0 で例外をトラッキングしたいなら trackUncaughtExceptions = YES

iOS アプリ開発で、Google Analytics 2.0 で例外をトラッキングする方法をメモ。

公式ドキュメントには、sendUncaughtExceptions と記載されてるけど、そんなものは無いです。(以前あった?)

Crashes & Exceptions – iOS SDK – Google Analytics — Google Developers

ソースコードを確認すれば分かりますが、Google Analytics で例外のトラッキングを設定する場合は trackUncaughtExceptions = YES を指定しましょう。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GAI sharedInstance].trackUncaughtExceptions = YES; // Enable 
 
  // ... the rest of your code, include other GAI properties you want to set.
}

ドキュメントは、SDKファイルと一緒に含まれてますので、こちらを確認しましょう。

Downloads – iOS SDK – Google Analytics — Google Developers

以上です。

[Android] Google Play で「お使いの端末はこのバージョンに対応していません。」と表示される場合にチェックすべき点

開発した Android アプリが、Google Play で「お使いの端末はこのバージョンに対応していません。」と表示される場合にチェックすべきポイントをメモ。

「お使いの端末はこのバージョンに対応していません。」発生時のチェック項目

下記に、Androidでインストール可能な端末を限定する方法が書かれているので、ここに該当してる項目がないかチェックしましょう。

Android Tips #18 インストール可能な端末を限定する | Developers.IO

カメラ機能を使ったアプリで除外端末になってしまう例

例えば、カメラ機能をマニフェストで要求している場合、カメラを搭載していないAndroid端末は除外対象になってしまいます。

そういう場合は、uses-feature で android:required=”false” を記述する必要があります。

●<uses-permission>を記載して<uses-feature>を記載しなかった場合、自動的に有効になる<uses-feature>がある。

android.permission.CAMERAの例にとると<uses-feature>の記載がなくても以下の機能が有効になります。

<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus"android:required="true" />

どのパーミッションでどの機能が自動的に有効になるかは以下サイトを参考にしてみてください。
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions

まとめ

カメラや位置情報を使ったアプリだと除外端末が増えてしまうので、しっかり <uses-feature> を確認する必要がありそうですね。

<uses-feature> | Android Developers

必須機能では無い場合、 android:required=”false” を指定して、インストール可能端末を増やして、インストールの機会損失を減らすように心掛けたいものです。

参考情報

Nexus7・N-06D・P-08DにおいてGoogle Playから「端末仕様確認ツール」がダウンロードできない事象について – NTTドコモ開発者情報Blog

[iOS] デタラメな操作で自動テストしてくれる「CrashMonkey」

iOS アプリで、デタラメな操作で自動テストしてくれる「CrashMonkey」が便利だったのでご紹介します。

GitHub: mokemokechicken/CrashMonkey

続きを読む