{"id":379,"date":"2014-03-01T12:41:42","date_gmt":"2014-03-01T03:41:42","guid":{"rendered":"http:\/\/www.typea.info\/blog\/index.php\/2014\/03\/01\/android_11\/"},"modified":"2014-03-01T12:41:42","modified_gmt":"2014-03-01T03:41:42","slug":"android_11","status":"publish","type":"post","link":"https:\/\/www.typea.info\/blog\/index.php\/2014\/03\/01\/android_11\/","title":{"rendered":"Android \u30a2\u30d7\u30ea\u5185\u8ab2\u91d1\u3092\u4f7f\u3063\u3066\u7121\u6599\u7248\u30a2\u30d7\u30ea\u3092\u30d7\u30ec\u30df\u30a2\u30e0\u7248\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3059\u308b\u30a2\u30d7\u30ea\u3092\u958b\u767a\u3059\u308b\u624b\u9806"},"content":{"rendered":"<p><a href=\"http:\/\/developer.android.com\/google\/play\/billing\/index.html\" target=\"_blank\">Google Play In-app Billing<\/a><\/p>\n<h2>1.\u6982\u8981<\/h2>\n<p>Google Play \u306e\u30b5\u30fc\u30d3\u30b9\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u304b\u3089\u30c7\u30b8\u30bf\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8ca9\u58f2\u51fa\u6765\u308b\u3002<\/p>\n<p>\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u306a\u5199\u771f\u306e\u3088\u3046\u306a\u3082\u306e\u304b\u3089\u3001\u30b2\u30fc\u30e0\u306e\u30ec\u30d9\u30eb\u3084\u6a5f\u80fd\u306a\u3069\u306e\u4eee\u60f3\u30b3\u30f3\u30c6\u30f3\u30c4\u307e\u3067\u5e45\u5e83\u3044\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8ca9\u58f2\u51fa\u6765\u308b\u3002<\/p>\n<p>\u8ca9\u58f2\u65b9\u6cd5\u306b\u306f<\/p>\n<ol>\n<li>\u6a19\u6e96\u578b(one-time billing) <\/li>\n<li>\u8cfc\u8aad\u578b(recurring, automated billing) <\/li>\n<\/ol>\n<p>\u304c\u3042\u308a\u3001\u3069\u3061\u3089\u306e\u65b9\u6cd5\u3067\u3082\u3001Google Play \u304c\u7ba1\u7406\u3059\u308b\u305f\u3081\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u76f4\u63a5\u91d1\u92ad\u53d6\u5f15\u306b\u95a2\u4e0e\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\u3002\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30b5\u30fc\u30d3\u30b9\u304c\u8cfc\u8cb7\u306b\u5229\u7528\u3055\u308c\u308b\u3002<\/p>\n<p>Google Play \u3092\u901a\u3057\u3066\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306a\u3089\u3053\u308c\u3089\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n<p>\u884c\u3046\u306e\u306b\u306f\u3001Google Play Developer \u30a2\u30ab\u30a6\u30f3\u30c8 \u304a\u3088\u3073 <a href=\"http:\/\/www.google.com\/wallet\/business\/\" target=\"_blank\">Google Wallet \u30de\u30fc\u30c1\u30e3\u30f3\u30c8\u30a2\u30ab\u30a6\u30f3\u30c8<\/a>\u4ee5\u5916\u306b\u7279\u5225\u306a\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u5fc5\u8981\u306a\u3044\u3002<\/p>\n<h2>2.\u6e96\u5099<\/h2>\n<h3>2.1 \u30b5\u30fc\u30d3\u30b9\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u8ffd\u52a0<\/h3>\n<p>IInAppBillingService.aidl \u3092\u30a2\u30f3\u30c9\u30ed\u30a4\u30c9\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>Android SDK Manager\u3092\u7acb\u3061\u4e0a\u3052\u3066\u3001Extras \u306e\u4e2d\u306b\u3042\u308b\u3001Google Play Billing Library \u306b\u30c1\u30a7\u30c3\u30af\u3092\u5165\u308c\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u5b9f\u65bd<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_sdk_download.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_sdk_download\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_sdk_download\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_sdk_download_thumb.jpg\" width=\"298\" height=\"213\" \/><\/a><\/p>\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001&lt;sdk\u30c7\u30a3\u30ec\u30af\u30c8\u30ea&gt; \u306e\u4ee5\u4e0b\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u3001IInAppBillingService.aidl\u304c\u3042\u308b\u306e\u3067\u3001\u81ea\u5206\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u53d6\u308a\u8fbc\u3080\u3002<\/p>\n<p>&lt;sdk\u30c7\u30a3\u30ec\u30af\u30c8\u30ea&gt;\\extras\\google\\play_billing\\samples\\TrivialDrive\\src\\<font color=\"#ff0000\">com\\android\\vending\\billing<\/font><\/p>\n<p>Eclipse \u306e\u5834\u5408\u3001src \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b com\\android\\vending\\billing \u3068\u3044\u3046\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u4f5c\u6210\u3055\u308c\u308b\u3088\u3046\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308c\u3070\u3088\u3044\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_import_aidl_file.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_import_aidl_file\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_import_aidl_file\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_import_aidl_file_thumb.jpg\" width=\"299\" height=\"303\" \/><\/a><\/p>\n<p>\u53d6\u308a\u8fbc\u3093\u3060\u3042\u3068\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b com\\android\\vending\\billing&#160; \u3068\u3001\u81ea\u5206\u306e\u30a2\u30d7\u30ea(info\\typea\\eitangoroid2) \u304csrc \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u4e26\u3076\u5f62\u306b\u306a\u308b\u3002<\/p>\n<p>\u307e\u305f\u3001gen \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u914d\u4e0b\u306e com\\android\\vending\\billing \u306b\u3001IInAppBillingService.java \u304c \u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_imported_aidl_file.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_imported_aidl_file\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_imported_aidl_file\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_imported_aidl_file_thumb.jpg\" width=\"301\" height=\"222\" \/><\/a><\/p>\n<h3>2.2 \u30d8\u30eb\u30d1\u30fc\u30af\u30e9\u30b9\u306e\u53d6\u308a\u8fbc\u307f<\/h3>\n<p>\u307e\u305f\u4e0a\u8a18\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3068\u3001\u30b5\u30f3\u30d7\u30eb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3&#160;&#160; TrivialDrive&#160; \u304c\u3001\u4ee5\u4e0b\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u542b\u307e\u308c\u3066\u3044\u308b\u3002(\u65b0\u898f\u306b\u30a2\u30d7\u30ea\u3092\u4f5c\u6210\u3059\u308b\u5834\u5408\u3001\u3053\u308c\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3067\u540d\u524d\u5909\u66f4\u3059\u308c\u3070\u3088\u3044\u3088\u3046\u3060)<\/p>\n<p>&lt;SDK\u30c7\u30a3\u30ec\u30af\u30c8\u30ea&gt;extras\\google\\play_billing\\samples\\TrivialDrive\\src\\com\\example\\android\\trivialdrivesample<\/p>\n<p>\u3053\u306e\u4e2d\u306e util \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u30d8\u30eb\u30d1\u30fc\u30af\u30e9\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u30d5\u30a9\u30eb\u30c0\u3054\u3068\u81ea\u5206\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u53d6\u308a\u8fbc\u3080\u3002\u81ea\u5206\u306f\u3059\u3067\u306butil \u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5b58\u5728\u3057\u305f\u306e\u3067\u3001\u914d\u4e0b\u306b billing \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u305d\u306e\u4e2d\u306b\u30af\u30e9\u30b9\u7fa4\u3092\u53d6\u308a\u8fbc\u3093\u3060\u3002<\/p>\n<p>\u53d6\u308a\u8fbc\u3093\u3060\u5f8c\u3001\u53d6\u308a\u8fbc\u3093\u3060\u30af\u30e9\u30b9\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u9069\u5b9c\u5909\u66f4\u3059\u308b\u3002<\/p>\n<p>&#160;<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_helper_classes_imported.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_helper_classes_imported\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_helper_classes_imported\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_helper_classes_imported_thumb.jpg\" width=\"300\" height=\"231\" \/><\/a><\/p>\n<h3>2.3 \u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc<\/h3>\n<p>\u3053\u3053\u307e\u3067\u3067\u3001\u4e00\u65e6APK\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3068\u3001\u30a2\u30d7\u30ea\u5185\u8ab2\u91d1\u3092\u884c\u3046\u306e\u306b\u5fc5\u8981\u306a\u3001\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u304c\u5f97\u3089\u308c\u308b\u3001\u3053\u308c\u306f\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u30b3\u30f3\u30bd\u30fc\u30eb\u306e\u3001\u30b5\u30fc\u30d3\u30b9\u3068API\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_licens_key.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_licens_key\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_licens_key\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_licens_key_thumb.jpg\" width=\"310\" height=\"174\" \/><\/a><\/p>\n<p><a href=\"http:\/\/developer.android.com\/training\/in-app-billing\/preparing-iab-app.html\" target=\"_blank\">\u3053\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u3092\u30d7\u30ed\u30b0\u30e9\u30e0\u306b\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3057\u306a\u3044\u3053\u3068\u3092\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u7684\u306b\u5f37\u304f\u63a8\u5968\u3055\u308c\u3066\u3044\u308b\u3002<\/a><\/p>\n<p>\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u5168\u4f53\u3092\u3001\u90e8\u5206\u304b\u3089\u5b9f\u884c\u6642\u306b\u751f\u6210\u3059\u308b\u304b\u3001\u6697\u53f7\u5316\u3057\u3066\u304a\u304f\u3053\u3068\u304c\u63a8\u5968\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001Base64 \u98a8\u306e\u3067\u305f\u3089\u3081\u306a\u6587\u5b57\u5217\u306e\u4e2d\u306b\u30e9\u30a4\u30bb\u30f3\u30b9\u30ad\u30fc\u3092\u57cb\u3081\u8fbc\u307f\u3001\u5b9f\u884c\u6642\u306b\u53d6\u308a\u51fa\u3059\u3088\u3046\u306b\u3057\u3066\u307f\u308b\u3002<\/p>\n<p>\u4ee5\u4e0b\u306f\u3001Python\u3067\u3067\u305f\u3089\u3081\u306aBase64\u98a8\u6587\u5b57\u5217\u3092\u4f5c\u6210\u3059\u308b\u4f8b\u3002\u5b9f\u884c\u6642\u306b\u7279\u5b9a\u306e\u4f4d\u7f6e\u3092\u5207\u308a\u51fa\u3057\u3066\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u308b\u3002<\/p>\n<pre class=\"prettyprint linenums\">&gt;&gt;&gt; import string\r\n&gt;&gt;&gt; from random import choice\r\n&gt;&gt;&gt; print &quot;&quot;.join([choice(string.ascii_lowercase + string.ascii_uppercase + string.digits + '+\/') for i in range(200)])\r\nb7XWPqVG0+FWMDWqJui8qI9f400dUMm3mzATE4ToLAKMK3sWTU3nnnF6GkepBlnh8P+nQMDL\/PmJJLajB6EnouXl1KleMsgMro1mshOnbOm\/JwprEb55c2al3sodwqWIRNRYVJHvIjmjH4jP9dzYfhkkOCM7CAV+ncvU1uErSvYzb+lf9O9py0ad20vVgyElXTzD2rt8<\/pre>\n<h3>2.4 \u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a<\/h3>\n<p>\u4ee5\u4e0b\u306e\u30d1\u30fc\u30df\u30c3\u30b7\u30e7\u30f3\u3092 AndroidManifest.xml \u306b\u8ffd\u52a0<\/p>\n<pre class=\"prettyprint linenums\">&lt;uses-permission android:name=&quot;com.android.vending.BILLING&quot; \/&gt;<\/pre>\n<h2>3.Google Play\u3068\u306e\u63a5\u7d9a<\/h2>\n<p>Google Play \u3068\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306b\u3001\u30a2\u30d7\u30ea\u5185\u8ab2\u91d1\u30ea\u30af\u30a8\u30b9\u30c8\u3092Google Play \u3078\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u9001\u4fe1\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002\u4e0a\u8a18\u3067\u53d6\u308a\u8fbc\u3093\u3060\u3001util \u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u30d8\u30eb\u30d1\u30fc\u30af\u30e9\u30b9\u304c\u3042\u308a\u3001\u540c\u671f\u63a5\u7d9a\u3092\u884c\u3046\u306b\u306f\u3001 IabHelper&#160; \u30af\u30e9\u30b9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3092 Activity \u306e onCreate \u3067\u884c\u3046<\/p>\n<h3>3.1 Google Play \u306e\u30a2\u30d7\u30ea\u5185\u8ab2\u91d1\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3059\u308b\u4f8b<\/h3>\n<p>onCreate() \u3067\u63a5\u7d9a<\/p>\n<pre class=\"prettyprint linenums\">@Override\r\nprotected void onCreate(Bundle savedInstanceState) {\r\n    super.onCreate(savedInstanceState);\r\n    \r\n    String publicKey = getString(R.string.publicKey);\r\n    billingHelper = new IabHelper(\r\n                        this, \r\n                        publicKey.substring(111 \/*\u30ad\u30fc\u306e\u524d\u306b\u4ed8\u4e0e\u3057\u305f\u30c0\u30df\u30fc\u306e\u6841*\/,\r\n                            publicKey.length()-999 \/*\u30ad\u30fc\u306e\u5f8c\u308d\u306b\u4ed8\u4e0e\u3057\u305f\u30c0\u30df\u30fc\u306e\u6841*\/));\r\n    \/\/ \u88fd\u54c1\u7248\u306e\u5834\u5408\u3001false \u3068\u3059\u308b\r\n    billingHelper.enableDebugLogging(true);\r\n    billingHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {\r\n           public void onIabSetupFinished(IabResult result) {\r\n              if (!result.isSuccess()) {\r\n                 Log.d(Eitangoroid2Application.TAG, &quot;Problem setting up In-app Billing: &quot; + result);\r\n              }            \r\n                 \/\/ Hooray, IAB is fully set up!  \r\n           }\r\n        });\r\n}<\/pre>\n<p>onDestroy() \u3067\u7834\u68c4\u3059\u308b<\/p>\n<pre class=\"prettyprint linenums\">@Override\r\npublic void onDestroy() {\r\n    if (billingHelper != null) {\r\n        billingHelper.dispose();\r\n    }\r\n    billingHelper = null;\r\n}<\/pre>\n<p>\u4e00\u65e6\u3001\u5b9f\u884c\u3059\u308b\u3068\u63a5\u7d9a\u306b\u6210\u529f\u3057\u305f\u3053\u3068\u3092 LogCat\u3067\u78ba\u8a8d\u51fa\u6765\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_connect_log.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_connect_log\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_connect_log\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_connect_log_thumb.jpg\" width=\"488\" height=\"77\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<h2>4.\u5546\u54c1\u306e\u767b\u9332<\/h2>\n<p>Google Play \u306b\u63a5\u7d9a\u307e\u3067\u3067\u304d\u305f\u306e\u3067\u3001\u5b9f\u969b\u306b\u8ca9\u58f2\u3059\u308b\u5546\u54c1\u3092\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>\u767b\u9332\u306f\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u30b3\u30f3\u30bd\u30fc\u30eb\u304b\u3089\u884c\u3046\u3002<\/p>\n<p>\u30a2\u30d7\u30ea\u5185\u30a2\u30a4\u30c6\u30e0 \u3092\u9078\u629e\u3057<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_before_apk_upload.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_before_apk_upload\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_before_apk_upload\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_before_apk_upload_thumb.jpg\" width=\"309\" height=\"172\" \/><\/a><\/p>\n<p>\u65b0\u3057\u3044\u30a2\u30a4\u30c6\u30e0\u3092\u8ffd\u52a0<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_first_item.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_first_item\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_first_item\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_first_item_thumb.jpg\" width=\"308\" height=\"176\" \/><\/a><\/p>\n<p>\u4eca\u56de\u306f\u3001\u7121\u6599\u7248\u3092\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3055\u305b\u308b\u3064\u3082\u308a\u306a\u306e\u3067\u3001\u7ba1\u7406\u5bfe\u8c61\u306e\u30a2\u30a4\u30c6\u30e0\u3092\u9078\u3073\u3001\u30e6\u30cb\u30fc\u30af\u306a\u30a2\u30a4\u30c6\u30e0ID\u3092\u767b\u9332\u3059\u308b\u3002\u3053\u306eID\u306f\u5f8c\u3067\u5909\u66f4\u51fa\u6765\u306a\u3044\u3068\u306e\u3053\u3068\u3002<\/p>\n<p><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/1072599\" target=\"_blank\"><strong>\u30a2\u30d7\u30ea\u5185\u30b5\u30fc\u30d3\u30b9ID\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3<\/strong><\/a><\/p>\n<blockquote>\n<p><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/1072599\" target=\"_blank\">\u30b5\u30fc\u30d3\u30b9 ID \u306f\u3001\u540c\u3058\u30a2\u30d7\u30ea\u306e\u3059\u3079\u3066\u306e\u30a2\u30a4\u30c6\u30e0\u306b\u308f\u305f\u3063\u3066\u56fa\u6709\u3067\u306a\u3051\u308c\u3070\u306a\u3089\u305a\u3001\u5f8c\u3067\u518d\u5229\u7528\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u305b\u3093\u3002<\/a><\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_managed_item.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_managed_item\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_managed_item\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_managed_item_thumb.jpg\" width=\"310\" height=\"214\" \/><\/a><\/p>\n<p>\u3068\u308a\u3042\u3048\u305a\u3001\u9069\u5f53\u306b\u8aac\u660e\u3092\u66f8\u3044\u3066\u4fdd\u5b58\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_item_notes.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_item_notes\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_item_notes\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_item_notes_thumb.jpg\" width=\"311\" height=\"200\" \/><\/a><\/p>\n<h2>5.\u88fd\u54c1\u306e\u554f\u3044\u5408\u308f\u305b<\/h2>\n<p>\u4f5c\u6210\u3057\u305f\u5546\u54c1\u3092Google Play \u306b\u554f\u3044\u5408\u308f\u305b\u3066\u307f\u308b\u3002\u5148\u307b\u3069\u3001onCreate() \u306b\u8ffd\u52a0\u3057\u305f\u30d6\u30ed\u30c3\u30af\u304b\u3089\u3001queryInventoryAsync() \u3092\u4f7f\u3063\u3066\u554f\u3044\u5408\u308f\u305b\u3002\u7d50\u679c\u306fmGotInventoryListener \u3067\u53d7\u3051\u53d6\u308b\u3002<\/p>\n<p>SKU_PREMIUM_UPGRADE \u306f\u3001\u5546\u54c1\u306b\u4ed8\u4e0e\u3057\u305f\u30b5\u30fc\u30d3\u30b9ID\u3002<\/p>\n<pre class=\"prettyprint linenums\">billingHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {\r\n       public void onIabSetupFinished(IabResult result) {\r\n          if (!result.isSuccess()) {\r\n             Log.d(Eitangoroid2Application.TAG, &quot;Problem setting up In-app Billing: &quot; + result);\r\n          }            \r\n          Log.d(Eitangoroid2Application.TAG, &quot;\/\/ Hooray, IAB is fully set up!  : &quot; + result);\r\n          \r\n          billingHelper.queryInventoryAsync(\r\n                  true, \r\n                  Arrays.asList(new String[]{SKU_PREMIUM_UPGRADE}),\r\n                  mGotInventoryListener);   \r\n       }\r\n    });<\/pre>\n<p>\u7d50\u679c\u3092\u53d7\u3051\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u305f\u3089\u30ed\u30b0\u306b\u51fa\u529b\u3002<\/p>\n<pre class=\"prettyprint linenums\">IabHelper.QueryInventoryFinishedListener mGotInventoryListener \r\n   = new IabHelper.QueryInventoryFinishedListener() {\r\n   public void onQueryInventoryFinished(IabResult result,\r\n      Inventory inventory) {\r\n\r\n      if (result.isFailure()) {\r\n          \/\/ handle error here\r\n          return;\r\n      }\r\n      else {\r\n          \/\/ does the user have the premium upgrade?\r\n          \/\/mIsPremium = inventory.hasPurchase(SKU_PREMIUM);        \r\n          \/\/ update UI accordingly\r\n          SkuDetails skuDetails = inventory.getSkuDetails(SKU_PREMIUM_UPGRADE);\r\n          if (skuDetails == null) {\r\n              Log.i(Eitangoroid2Application.TAG,&quot;skuDetails is null&quot;);\r\n          } else {\r\n              Log.i(Eitangoroid2Application.TAG, \r\n                      String.format(&quot;%s %s&quot;, skuDetails.getDescription(),skuDetails.getPrice()));\r\n          }\r\n          isPremium = inventory.hasPurchase(SKU_PREMIUM_UPGRADE);\r\n      }\r\n   }\r\n};<\/pre>\n<p>\u30a2\u30d7\u30ea\u3092\u5b9f\u884c\u3057\u3001LogCat\u3067\u5546\u54c1\u60c5\u5831\u304c\u53d6\u5f97\u3067\u304d\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_get_skudetail.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_get_skudetail\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_get_skudetail\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_get_skudetail_thumb.jpg\" width=\"386\" height=\"88\" \/><\/a><\/p>\n<h2>6.\u88fd\u54c1\u306e\u8cfc\u5165<\/h2>\n<p>\u88fd\u54c1\u8cfc\u5165\u306e\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u3002\u81ea\u30a2\u30d7\u30ea\u3067\u306f\u3001onOptionItemSelected \u3067\u8cfc\u5165\u3055\u305b\u308b\u3002launchPurchaseFlow()\u3092\u547c\u3073\u51fa\u3059\u3002\u4e0b\u4f8b\u3067\u300110001 \u3068\u3057\u3066\u3044\u308b\u7b87\u6240\u306b\u306f\u3001\u4efb\u610f\u306e\u6570\u5024\u3092\u6307\u5b9a\u3059\u308b\u3068\u3001Google Play\u304c\u3053\u306e\u5024\u3092\u7d50\u679c\u3068\u3057\u3066\u8fd4\u3057\u3066\u304f\u308b\u3002<\/p>\n<pre class=\"prettyprint linenums\">@Override\r\npublic boolean onOptionsItemSelected(MenuItem item) {\r\n \r\n boolean ret = true;\r\n switch(item.getItemId()) {\r\n case R.id.action_upgrade:\r\n     billingHelper.launchPurchaseFlow(\r\n             this, \r\n             SKU_PREMIUM_UPGRADE, \r\n             10001, \r\n             mPurchaseFinishedListener);\r\n     \r\n     break;\r\n default:\r\n     ret =  super.onOptionsItemSelected(item);\r\n }\r\n return ret;\r\n}<\/pre>\n<p>\/\/ TODO \u306b\u3001\u8cfc\u5165\u304c\u6210\u529f\u3057\u305f\u5834\u5408\u306e\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3059\u308b<\/p>\n<pre class=\"prettyprint linenums\">IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener \r\n   = new IabHelper.OnIabPurchaseFinishedListener() {\r\n   public void onIabPurchaseFinished(IabResult result, Purchase purchase) \r\n   {\r\n      if (result.isFailure()) {\r\n         Log.d(Eitangoroid2Application.TAG, &quot;Error purchasing: &quot; + result);\r\n         return;\r\n      } else if \r\n          (purchase.getSku().equals(SKU_PREMIUM_UPGRADE)) {\r\n          \r\n         \/\/ TODO\r\n      }\r\n   }\r\n};<\/pre>\n<p>&#160;<\/p>\n<h2>7.\u30c6\u30b9\u30c8<\/h2>\n<h3>7.1 \u53d6\u5f15\u306b\u3064\u3044\u3066<\/h3>\n<p>\u3055\u3066\u3001\u30c6\u30b9\u30c8\u3060\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u516c\u958b\u524d\u306b\u3001\u30a2\u30eb\u30d5\u30a1\u7248\u3001\u30d9\u30fc\u30bf\u7248\u3092\u5229\u7528\u3057\u3066\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u306b\u30c6\u30b9\u30c8\u3092\u5b9f\u65bd\u3057\u3066\u3082\u3089\u3046\u3053\u3068\u304c\u51fa\u6765\u308b\u3002Google Play\u306f\u6ce8\u6587\u306b\u3088\u308a\u91d1\u92ad\u306e\u53d6\u5f15\u304c\u767a\u751f\u3059\u308b\u306e\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u81ea\u52d5\u7684\u306b14\u65e5\u3067\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u308b\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u3078\u306e\u5909\u66f4\u306f\u767a\u751f\u3057\u306a\u3044\u3002<\/p>\n<h3>7.2 \u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u767b\u9332<\/h3>\n<p><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/3131213?hl=ja\">https:\/\/support.google.com\/googleplay\/android-developer\/answer\/3131213?hl=ja<\/a><\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_alfa_tester.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_alfa_tester\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_alfa_tester\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_alfa_tester_thumb.jpg\" width=\"316\" height=\"195\" \/><\/a><\/p>\n<p>\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc\u30b3\u30f3\u30bd\u30fc\u30eb\u304b\u3089\u3001\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u306e\u7ba1\u7406\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u3067\u3001\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u3092\u767b\u9332\u3067\u304d\u308b\u306e\u3060\u304c\u3001Google\u30b0\u30eb\u30fc\u30d7\u304bGoogle+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304b\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p>\u3068\u3044\u3046\u3053\u3068\u3067\u3001\u30a2\u30d7\u30ea\u30c6\u30b9\u30c8\u7528\u306eGoogle+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u958b\u8a2d\u3057\u3066\u307f\u305f\u3002<\/p>\n<p>\u624b\u9806\u306f\u4ee5\u4e0b\u53c2\u7167<\/p>\n<p><a href=\"https:\/\/support.google.com\/plus\/topic\/2888488\">Google+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3<\/a><\/p>\n<p><a href=\"https:\/\/plus.google.com\/u\/0\/communities\/109736718368840290206\">https:\/\/plus.google.com\/u\/0\/communities\/109736718368840290206<\/a><\/p>\n<p>\u30a2\u30d7\u30ea\u306e\u30a2\u30eb\u30d5\u30a1\u30c6\u30b9\u30c8\u7248\u3092\u63d0\u4f9b\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u3067\u3001Google+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u8ffd\u52a0\u3068\u3042\u308b\u306e\u3060\u304c\u3001\u3053\u3053\u306b\u306f\u3001Google+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306eURL\u3092\u5165\u529b\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/support.google.com\/googleplay\/android-developer\/answer\/3131213?hl=ja\" target=\"_blank\">Google+ \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e URL \u307e\u305f\u306f Google \u30b0\u30eb\u30fc\u30d7\u306e\u30e1\u30fc\u30eb \u30a2\u30c9\u30ec\u30b9\u3092\u30c7\u30d9\u30ed\u30c3\u30d1\u30fc \u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u8ffd\u52a0<\/a><\/p>\n<p>\u4f55\u3092\u5165\u529b\u3057\u305f\u3089\u3044\u3044\u306e\u304b\u308f\u304b\u3089\u305a\u3001\u3057\u3070\u3089\u304f\u60a9\u3093\u3060\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_google_plus_success.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_google_plus_success\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_google_plus_success\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_google_plus_success_thumb.jpg\" width=\"294\" height=\"258\" \/><\/a><\/p>\n<p>\u4e0b\u6bb5\u306e\u30ea\u30f3\u30af\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u30e6\u30fc\u30b6\u30fc\u3067\u30a2\u30eb\u30e0\u65e8\u78ba\u8a8d\u3067\u304d\u3001Google Play \u3078\u306e\u30ea\u30f3\u30af\u304c\u5f35\u3063\u3066\u3042\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_be_tester.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_be_tester\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_be_tester\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_be_tester_thumb.jpg\" width=\"293\" height=\"208\" \/><\/a><\/p>\n<p>&#160;<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_alfa_publish.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_alfa_publish\" style=\"border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_alfa_publish\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_alfa_publish_thumb.jpg\" width=\"298\" height=\"87\" \/><\/a><\/p>\n<h4>7.3 \u958b\u767a\u8005\u672c\u4eba\u3060\u3068\u30a8\u30e9\u30fc<\/h4>\n<p>\u60f3\u5b9a\u3057\u3066\u3044\u305f\u3051\u3069\u3001\u958b\u767a\u8005\u672c\u4eba\u30a2\u30ab\u30a6\u30f3\u30c8\u3060\u3068\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3002<\/p>\n<p>\u901a\u5e38\u3067\u3082\u6709\u6599\u30a2\u30d7\u30ea\u306f\u958b\u767a\u8005\u672c\u4eba\u304c\u8cfc\u5165\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u306e\u3067\u3001\u60f3\u5b9a\u5185\u3067\u306f\u3042\u308b\u304c\u3001\u3044\u3061\u3044\u3061\u4ed6\u4eba\u306b\u983c\u3093\u3060\u308a\u3059\u308b\u306e\u306f\u9762\u5012\u306a\u306e\u3067\u81ea\u5206\u3067\u30c6\u30b9\u30c8\u304c\u3067\u304d\u308b\u3068\u3088\u3044\u306e\u3060\u3051\u308c\u3069\u3002<\/p>\n<p>&#160;<a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_fail.png\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_fail\" style=\"border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_fail\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_fail_thumb.png\" width=\"158\" height=\"277\" \/><\/a><\/p>\n<h4>7.4 \u77e5\u4eba\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u78ba\u8a8d<\/h4>\n<p>\u77e5\u4eba\u3092Google+\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30fc\u306b\u62db\u5f85\u3057\u3001\u53c2\u52a0\u3092\u627f\u8afe\u3057\u3066\u3082\u3089\u3063\u305f\u4e0a\u3067\u3001\u4e0a\u8a18URL\u3092\u901a\u77e5\u3057\u3001\u5148\u307b\u3069\u3068\u540c\u69d8\u306b\u30a2\u30d7\u30ea\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3001\u8cfc\u5165\u3092\u8a66\u3057\u3066\u307f\u308b\u3002<\/p>\n<p>\u4eca\u5ea6\u306f\u554f\u984c\u306a\u304f\u8cfc\u5165\u306b\u9032\u3080\u3053\u3068\u304c\u3067\u304d\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_inapp_billing_parchase.png\"><img loading=\"lazy\" decoding=\"async\" title=\"android_inapp_billing_parchase\" style=\"border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px\" border=\"0\" alt=\"android_inapp_billing_parchase\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_inapp_billing_parchase_thumb.png\" width=\"154\" height=\"244\" \/><\/a> <\/p>\n<p>\u8cfc\u5165\u5f8c\u3001\u60f3\u5b9a\u901a\u308a\u5e83\u544a\u304c\u8868\u793a\u3055\u308c\u306a\u3044\u3053\u3068\u3082\u78ba\u8a8d\u3067\u304d\u305f\uff01<\/p>\n<p>&#160;<\/p>\n<h3>8.\u88fd\u54c1\u7248\u3068\u3057\u3066\u516c\u958b<\/h3>\n<p>\u88fd\u54c1\u7248\u306b\u79fb\u884c\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u307f\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product.png\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_goto_product\" style=\"border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_goto_product\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product_thumb.png\" width=\"373\" height=\"109\" \/><\/a> <\/p>\n<p>\u73fe\u5728\u516c\u958b\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u306e\u885d\u7a81(?)\u304c\u6ce8\u610f\u3055\u308c\u308b\u306e\u3067\u3001\u73fe\u5728\u516c\u958b\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u7121\u52b9\u306b\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product2.png\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_goto_product2\" style=\"border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_goto_product2\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product2_thumb.png\" width=\"380\" height=\"125\" \/><\/a> <\/p>\n<p>\u3042\u3089\u305f\u3081\u3066\u3001\u6700\u65b0\u7248\u3092\u516c\u958b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product3.png\"><img loading=\"lazy\" decoding=\"async\" title=\"android_in_app_billing_goto_product3\" style=\"border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px\" border=\"0\" alt=\"android_in_app_billing_goto_product3\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/Android-_ECFD\/android_in_app_billing_goto_product3_thumb.png\" width=\"382\" height=\"171\" \/><\/a> <\/p>\n<p>&#160;<\/p>\n<p>\u4ee5\u4e0a\u3081\u3067\u305f\u3057\u3081\u3067\u305f\u3057\uff01<\/p>\n<p><iframe style=\"height: 240px; width: 120px\" marginheight=\"0\" src=\"http:\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=typea09-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4844335340\" frameborder=\"0\" marginwidth=\"0\" scrolling=\"no\"><\/iframe><iframe style=\"height: 240px; width: 120px\" marginheight=\"0\" src=\"http:\/\/rcm-fe.amazon-adsystem.com\/e\/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=typea09-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4798040029\" frameborder=\"0\" marginwidth=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google Play In-app Billing 1.\u6982\u8981 Google Play \u306e\u30b5\u30fc\u30d3\u30b9\u3067\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u304b\u3089\u30c7\u30b8\u30bf\u30eb\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8ca9\u58f2\u51fa\u6765\u308b\u3002 \u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u306a\u5199\u771f\u306e\u3088\u3046\u306a\u3082\u306e\u304b\u3089\u3001\u30b2\u30fc\u30e0\u306e\u30ec\u30d9\u30eb\u3084\u6a5f\u80fd\u306a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","sitemap_hide":"","_veu_custom_css":"","veu_display_promotion_alert":"","vkexunit_cta_each_option":"","footnotes":""},"categories":[39],"tags":[],"class_list":["post-379","post","type-post","status-publish","format-standard","hentry","category-android"],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=379"}],"version-history":[{"count":0,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/379\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=379"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=379"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}