2015年4月24日金曜日

【Android】Googleデベロッパーコンソールからアプリ内アイテムをCSVで一括アップロードする

Androidでアプリ内課金の仕組みを実装しなくてはならなくなりました。
 アプリ側の実装も必要ですが、デベロッパーコンソールから有料アイテムを登録する作業も必要です。

コンソールから登録しないといけないアイテム数が多いのでCSVで一括登録したいんですがこれがうまくいかない。特に価格のところがどんな値を入れてもエラーになり、しかも正しい書式をGoogle側が示してくれない。これはエラー表示するときに合わせて正しい表記を出力すべきですねGoogleさんは。

クソだと思いました。

で、いろいろやっていたところ、やっとうまくいきました。

ポイント:
■CSVファイルの保存コードは「UTF-8(BOMなし)」。
■日本円で99円の表記は、「JP; 99000000」。
■つまり、日本円を示すために「JP; 」。
■99という数字を示すために「99000000」(ゼロが6つ)。
■1行目をタイトル行にせずいきなりデータ行から始める。

見本データ一行分(ブログ記事では改行が挟まるかもしれませんが一行です):

a0105,published,managed_by_android,false,ja_JP; アイテム名; アイテム詳細記述,false,JP; 99000000


----------
ちなみにダウンロードCSVの一行目(タイトル行)は以下のような感じでした(アップロードCSVファイルには一行目のタイトル行は不要)。

Product ID,Published State,Purchase Type,Auto Translate,Locale; Title; Description,Auto Fill Prices,Price

2015年4月6日月曜日

【Android】メールアプリを暗黙的インテントで呼び出し、送信後に元のアプリに戻る

ネット上のニュースなどを集めるアプリで、ニュース記事を共有する機能があるとする。
■ツイッターに投稿
■LINEに投稿
■フェイスブックに投稿
■メールで送信

メールで送信させるときは、メールアプリを暗黙的インテントで呼び出していた。
しかし、メール送信後、画面がメールアプリのままなので元のアプリまでユーザーに操作して戻ってもらわねばならなかった。

これを修正。

こうしたい:
■メール編集画面から戻るボタン→元のアプリに戻る。
■メール送信後→元のアプリに戻る。

意外と簡単に出来た。
※String url_for_mailto はmailtoのリンク文字列
この処理は「メール送信ボタン」のオンクリックリスナーなどに書かれる。

----------------------------
修正前
----------------------------
uri = Uri.parse(url_for_mailto);

//インテント作成
Intent intent = new Intent(
  Intent.ACTION_SENDTO, //メールソフト起動
  uri                   //URIインスタンス
);
//メールアプリは新たに立ち上げさせる
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//スタートアクティビティの主語はアクティビティインスタンス
activity.startActivity(intent);



----------------------------
修正前
----------------------------
uri = Uri.parse(url_for_mailto);

//インテント作成
Intent intent = new Intent(
  Intent.ACTION_SENDTO, //メールソフト起動
  uri                   //URIインスタンス
);
//メールアプリは新たに立ち上げさせる
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//スタートアクティビティの主語はアクティビティインスタンス
//インテントの開始をstartActivityForResult メソッドで行えば、メール送信後(または戻るボタンを押した時)このアプリに戻る
activity.startActivityForResult(intent, 1);



つまり、startActivityForResultメソッドを使うということですね。