• [工作积累] Google Play Services


    注意添加APP_ID

    1       <meta-data android:name="com.google.android.gms.games.APP_ID"
    2          android:value="@string/app_id" />
    3       <meta-data android:name="com.google.android.gms.version"
    4           android:value="@integer/google_play_services_version"/>

    使用对应的AndroidInitialization方法

    gpg-cpp-sdk/android/include/gpg/android_initialization.h

     1 /**
     2  * @file gpg/android_initialization.h
     3  *
     4  * @brief Android specific initialization functions.
     5  */
     6 
     7 #ifndef GPG_ANDROID_INITIALIZATION_H_
     8 #define GPG_ANDROID_INITIALIZATION_H_
     9 
    10 #ifndef __cplusplus
    11 #error Header file supports C++ only
    12 #endif  // __cplusplus
    13 
    14 #include <android/native_activity.h>
    15 #include <jni.h>
    16 #include "gpg/common.h"
    17 
    18 // Forward declaration of android_app from android_native_app_glue.h.
    19 struct android_app;
    20 
    21 namespace gpg {
    22 
    23 /**
    24  * AndroidInitialization includes three initialization functions, exactly one of
    25  * which must be called. In the case of a standard Java Activity, JNI_OnLoad
    26  * should be used. In the case of a NativeActivity where JNI_OnLoad will not be
    27  * called, either android_main or ANativeActivity_onCreate should be used.
    28  * android_main is used when building a NativeActivity using
    29  * android_native_app_glue.h. ANativeActivity_onCreate is used when building a
    30  * NativeActivity using just native_activity.h. android_native_app_glue.h and
    31  * native_activity.h are default Android headers.
    32  *
    33  * The appropriate initialization function must be called exactly once before
    34  * any AndroidPlatformConfiguration instance methods are called, and it must be
    35  * called before a GameServices object is instantiated. It is permitted to
    36  * instantiate a AndroidPlatformConfiguration before one of the intialization
    37  * calls (for example, if the configuration object has global scope), as long as
    38  * no methods are called before the initialization call. These methods need be
    39  * called only once in the lifetime of the calling program, not once per
    40  * GameServices object created.
    41  */
    42 struct GPG_EXPORT AndroidInitialization {
    43   /**
    44    * When using Play Game Services with a standard Java Activity, JNI_OnLoad
    45    * should be called when the dynamic library's JNI_OnLoad is called.
    46    */
    47   static void JNI_OnLoad(JavaVM *jvm);
    48 
    49   /**
    50    * When using Play Game Services with a NativeActivity which is based on
    51    * android_native_app_glue.h, android_main should be called during your
    52    * activity's android_main, before any other Play Game Services calls.
    53    */
    54   static void android_main(struct android_app *app);
    55 
    56   /**
    57    * When using Play Game Services with a NativeActivity which is based on only
    58    * native_activity.h, ANativeActivity_onCreate should be called during your
    59    * activity's ANativeActivity_onCreate, before any other Play Game Services
    60    * calls.
    61    */
    62   static void ANativeActivity_onCreate(ANativeActivity *native_activity,
    63                                        void *savedState,
    64                                        size_t savedStateSize);
    65 };
    66 
    67 }  // namespace gpg
    68 
    69 #endif  // GPG_ANDROID_INITIALIZATION_H_

    API Level 14以上: OnActivityResult必须调用, 其他不需要.  14以下都需要.

    gpg-cpp-sdk/android/include/gpg/android_support.h

     1 #ifndef __cplusplus
     2 #error Header file supports C++ only
     3 #endif  // __cplusplus
     4 
     5 #include "gpg/common.h"
     6 
     7 namespace gpg {
     8 
     9 /**
    10  * Functions which enable pre- Android 4.0 support.
    11  *
    12  * <h1>Android Lifecycle Callbacks</h1>
    13  *
    14  * For apps which target Android 2.3 or 3.x devices (API Version prior to 14),
    15  * Play Game Services has no way to automatically receive Activity lifecycle
    16  * callbacks. In these cases, Play Game Services relies on the owning Activity
    17  * to notify it of lifecycle events. Any Activity which owns a GameServices
    18  * object should call the AndroidSupport::* functions from within their own
    19  * lifecycle callback functions. The arguments in these functions match those
    20  * provided by Android, so no additional processing is necessary.
    21  *
    22  * For apps which target android 4.0+ (API Version greater than or equal to 14),
    23  * most of these function calls are unnecessary. For such apps only the
    24  * OnActivityResult function must be called.
    25 ...

    Update: IAP/Google IAB

    ref: http://developer.android.com/google/play/billing/billing_testing.html

    遇到的问题:

    response code 4: item unavailable

    "the item you requested is not available for purchase"

    http://developer.android.com/google/play/billing/v2/billing_reference.html

    RESULT_ITEM_UNAVAILABLE    4

    Indicates that Google Play cannot find the requested item in the application's product list. This can happen if the product ID is misspelled in your REQUEST_PURCHASE request or if an item is unpublished in the application's product list.

    Check list: (answered by nmw01223)

    http://stackoverflow.com/questions/11020587/in-app-billing-item-requested-not-available-for-purchase

    对照检查, 我这里的问题是第6条:

    dev console上上传的的APK, versionCode为6, 设备测试用的APK, versionCode 12.

    将本地设备使用的版本号改为6, 问题解决. 估计将新版本的APK上传到dev console也可以解决这个问题.

  • 相关阅读:
    [Leetcode] Median of Two Sorted Arrays
    [Jobdu] 题目1463:招聘会
    [Leetcode] Merge Two Sorted Lists
    [Leetcode] Combinations
    [Leetcode] Populating Next Right Pointers in Each Node II
    [Leetcode] Insertion Sort List
    redis在Web中的使用
    设计模式:单例模式
    设计模式:基本法则
    设计模式:工厂模式
  • 原文地址:https://www.cnblogs.com/crazii/p/4779155.html
Copyright © 2020-2023  润新知