XamarinでAmazon IAP対応
Amazon App Store対応するにあたって、やらなきゃいけなかったのはアプリ内課金の実装差し替え。Amazon Developerの登録からアプリ申請まで、のべ5時間くらいかなー。Google Play側で使った資源を使えば特に問題なかった。(114pxのアイコンだけ別途必要だった)
ただ、アプリ内課金対応で一部うまくいかなかった所があるので共有。
結論としては(一部)うまくいかない
IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
// I get an exception "initializer for 'Builder' threw an exception.
// ---> Java.Lang.UnsatisfiedLinkError".
// The exception text states that
// it could not find the library "libAmazonIapV2Bridge.so".
・手持ちの適当なAndroid端末(X4-SH)でデバッグ実行すると
上記コードの1行目、AmazonIapV2iImple.Insetanceの取得時に例外発生。
状況は完全にこのURLと同じ。
・古いKindle Fire 5 では問題なく動くので、やはりadd-in側の問題っぽい。
add-in works OK with an ARM device, and does not work with an ARM64 device.
このへんを参考に、libAmazonIapV2Bridge.soを追加してあげればいいのかな?と思ったりしてるけど、とりあえず「このデバイスではAmazon版じゃなくてGoogle Play版使ってね」って言って逃げておくことにした。。
対応手順
・Amazonの提供するIAP Plugin for Xamarin(v2.0)をダウンロード
・こちらの手順で.xam内のAmazonIapV2Android.dllを参照設定に追加し、
AmdroidManifest.xmlにてIAP Response Receiverを宣言
・Plugin.InAppBillingが担っていたアプリ内課金対応コードを置き換え
(awaitせずイベントハンドラを登録しておいて結果を別途待つ感じ)
・App Testerが優秀なので、実装と単体テストは特に困らなかった!
実装のイメージはこのあたりを参考にした。C#でもやる事は一緒。
APKファイル追加したら怒られた
まぁ、そうだよね、、多分俺のせいじゃないけど、、、
まぁ、Amazon側は「うちの端末はハイブリッドだから別にいいんじゃね?」って方針っぽいし、アドインがバージョンアップされるまでこのままでいいかなー。。
まぁ、特に問題なく審査は通過しましたー。やったね!