1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/sinagamesdk-sinagamesdk-android

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
新浪游戏AndroidSDK接入文档—客户端.md 28 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 17:09 61ace3b

Документация по интеграции SDK Sina Games

1. История обновлений

28. 09. 2020 v1. 4. 7. 232

1. Обновлен функционал оплаты SDK

17. 08. 2020 v1. 4. 7. 231

1. Добавлено пользовательское соглашение

13. 03. 2020 v1. 4. 7. 230

1. Улучшена функция предотвращения зависимости от игры, добавлен обратный вызов выхода
2. Обновлено SDK до версии v1. 4. 7. 230

Документация по интеграции SDK Sina Games

1. История обновлений

14. 01. 2020 v1. 4. 6. 229

1. Добавлен вызов интерфейса подтверждения личности
2. Обновлено SDK до версии v1. 4. 6. 229

Документация по интеграции SDK Sina Games

1. История обновлений

14. 01. 2020 v1. 4. 5. 228

1. Добавлена функция ограничения времени использования пользователем
2. Изменены правила подтверждения личности пользователя
3. Предоставлены методы для получения информации о подтверждении личности пользователя, возрасте пользователя и статусе пользователя как гостя
4. Обновлено SDK до версии v1. 4. 5. 228

Документация по интеграции SDK Sina Games

1. История обновлений

26. 09. 2017 v1. 4. 4. 227

1. Добавлена динамическая подача разрешений приложения для Android 6. 0
2. Обновлено SDK до версии v1. 4. 4. 227

03. 05. 2017 v1. 4. 4. 226

1. В SDK добавлен модуль подтверждения личности
2. Поддержка системы Android 7. 0
3. Улучшена производительность
Игры, уже интегрированные с SDK версии 1. 3. 0 или выше, должны заменить файлы sinagame_sdk_xxx. jar и файлы sinagame_res в папке raw.
Для новых игр, если в файле AndroidMainifest.xml содержит неудаленные параметры каналов, их следует удалить, иначе это может привести к ошибкам.

02. 03. 2016 v1. 4. 3. 224

1. В SDK добавлен модуль управления аккаунтами, поддерживающий функции отвязки, изменения пароля и т. д.
Игры, уже интегрированные с SDK версии 1. 3. 0 или выше, должны заменить файлы sinagame_sdk_xxx. jar и файлы sinagame_res в папке raw.
Для новых игр, если в файле AndroidManifest. xml есть неудаленные параметры каналов, их следует удалить, иначе это может привести к ошибкам.

01. 02. 2016 v1. 4. 2. 217

1. В SDK добавлена функция получения купонов
Игры, уже интегрированные с SDK версии 1. 3. 0 или выше, должны заменить файлы sinagame_sdk_xxx. jar и файлы sinagame_res в папке raw.
Для новых игр, если в файле AndroidManifest. xml есть неудаленные параметры каналов, их следует удалить, иначе это может привести к ошибкам.

21. 12. 2015 v1. 4. 1. 215

1. SDK поддерживает систему Android 6. 0
Игры, уже интегрированные с SDK версии 1. 3. 0 или выше, должны заменить файлы sinagame_sdk_xxx. jar и файлы sinagame_res в папке raw.

08. 12. 2015 v1. 4. 0_214

1. В странице кассы добавлены ссылки на детали платежа
2. Если есть купоны, их можно использовать для оплаты
3. Изменен процесс заказа, теперь заказы делаются до перехода на страницу кассы
4. Исправлены ошибки сильного обновления для некоторых специальных моделей
  1. Оптимизация опыта использования деталей SDK Игры, использующие SDK версии 1. 3. 0, должны заменить файлы sinagame_sdk_xxx.```markdown jar и файлы в директории raw с файлами sinagame_res
   #### 2015-09-18 v1.3.0_212
  1. Оптимизация логики отображения полосы прогресса, если время отклика меньше 700 миллисекунд, полоса прогресса не отображается
  2. Правила автоматического считывания кода подтверждения по SMS стали строже
  3. В центре оплаты добавлен тип оплаты "Баланс пользователя"
  4. Исправлен баг, вызывающий WeiboException при входе в систему через WebView в Weibo
  5. В центре оплаты добавлен вход "Онлайн-поддержка"
  6. Добавлена функция уведомления о сообщениях обратной связи
 ### 2. Введение  
Документация применима ко всем клиентским играм для Android, работающим с партнерами. Перед подключением убедитесь, что ваше приложение получило appkey и параметр redirect от наших операционных коллег. Если вы еще не получили эти данные, свяжитесь с нашими операционными коллегами.
 ### 3. Подготовка  
* Импорт пакета SDK  
Скопируйте 5 файлов из пакета ресурсов SDK в проект игры, как показано на рисунке ниже  
![](http://git.oschina.net/uploads/images/2015/0813/162444_baa4271c_483144.png "Введите заголовок изображения")
* Настройка AndroidManifest  
В файле AndroidManifest.xml проекта настройте права пользователя  
Пожалуйста, скопируйте следующий код настроек прав в файл AndroidManifest.xml:
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- Необходимо для автоматического считывания кода подтверждения по SMS -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <!-- Необходимо для регистрации с помощью одного нажатия -->
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.RESTART_PACKAGES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
	<!-- Платежи через UnionPay требуют фотографии при излишнем пополнении счета -->
	<uses-feature android:name="android.hardware.camera" />
	<uses-permission android:name="android.permission.CAMERA" />
	<uses-permission android:name="android.hardware.camera.autofocus" />
    <!-- Платежи через UnionPay требуют видео при излишнем пополнении счета -->
	<uses-permission android:name="android.permission.RECORD_VIDEO"/>
	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  • Добавьте необходимые компоненты
    Скопируйте следующий код в узел Application файла AndroidManifest.xml: ```markdown
Примечание: значения в двух вышеупомянутых местах должны быть заменены (параметры можно получить у наших коллег по операционной команде), как показано на следующих изображениях: ! [введите описание изображения здесь](http://git. oschina. net/uploads/images/2015/0813/162726_b5d86aff_483144. png "введите описание изображения здесь") ! [введите описание изображения здесь](http://git. oschina. net/uploads/images/2015/0813/162738_3caa26ab_483144. png "введите описание изображения здесь") Примечание: относительно свойств экрана для некоторых активностей, связанных с платежами (например, screenOrientation="portrait"), не рекомендуется их изменять. Даже если включаемая игра работает в ландшафтном режиме, не следует менять ориентацию на "landscape", так как некоторые методы платежа плохо работают в ландшафтном режиме. Поэтому лучше использовать стандартные настройки, как показано на следующем изображении: ! [введите описание изображения здесь](http://git. oschina. net/uploads/images/2015/0813/171132_0c49a944_483144. png "введите описание изображения здесь") ### 4. Использование в коде * В MainActivity инициализировать SDK (не вызывайте метод инициализации в потоке, иначе произойдет неизвестная ошибка) **(обязательно)** ``` @Override protected void onCreate(Bundle savedInstanceState) { WeiboGameSDKAPI. init(this); super. onCreate(savedInstanceState); } ``` ``` * Описание обратного вызова SinaGameCallBack ``` public interface SinaGameCallBack { public void onResult(int code, Object obj); } ```При вызове интерфейсов входа, оплаты, выхода и других будет срабатывать обратный вызов. Параметр code будет содержать код состояния. Определение кодов состояния приведено ниже:`````` public static final int START = 0; public static final int SUCCESS = 1; public static final int ERROR = 2; public static final int CANCEL = 3; public static final int TIMEOUT = 4; ```
  • Код равный 0 указывает на начало вызова интерфейса. Этот статус используется только для статистики вызовов интерфейсов. Если стороны, принимающие вызов, не используют статистику, этот статус можно игнорировать.
  • Код равный 1 указывает на успешное завершение. В этом случае параметр obj можно привести к соответствующему типу объекта. Тип объекта obj зависит от интерфейса. Подробности см. в описании соответствующего интерфейса.
  • При коде, равном другим состояниям, параметр obj всегда имеет тип String, и можно получить сообщение об ошибке, вызвав obj.toString().
  • Вход (обязательный)
WeiboGameSDKAPI.login(act, new SinaGameCallBack() {
    @Override
    public void onResult(int code, Object obj) {
        if (code == SUCCESS) {  
            SinaUser user = (SinaUser) obj;  
            String json = user.toString();  
        }
        //else if для обработки других состояний
    }
});

Если вход успешен, то код будет равен 1, объект obj можно привести к типу SinaUser. Если вход неудачен или отменен, то объект obj будет иметь тип String, содержащий соответствующее сообщение об ошибке.

Примечание: из-за проблем, связанных с версией, поля suid и id объекта SinaUser имеют одинаковые значения и могут использоваться как уникальные идентификаторы пользователя. Можно использовать любой из них.* Выход (отмена входа) (доступен, необязательный)

WeiboGameSDKAPI.logout(act);

Этот метод очистит информацию входа из глобальной переменной SDK.

  • Проверка входа (доступен, необязательный)
WeiboGameSDKAPI.isLogin(act);
  • Выход (обязательный)
WeiboGameSDKAPI.exit(act, new SinaGameCallBack() {
    @Override
    public void onResult(int code, Object obj) {
        if (code == SUCCESS) {
            //Логика выхода
        }
    }
});

Когда код обратного вызова равен 1, это указывает на то, что пользователь нажал кнопку выхода в диалоговом окне выхода, в этом случае сторона, принимающая вызов, должна самостоятельно обрабатывать событие выхода, например, вызвать следующий код для завершения процесса:

MainActivity.this.finish();  
android.os.Process.killProcess(android.os.Process.myPid());
  • Переключение аккаунта (доступен, необязательный)
WeiboGameSDKAPI.switchAccount(act, new SinaGameCallBack() {
    @Override
    public void onResult(int code, Object obj) {
        //Результат обратного вызова аналогичен результату входа
    }
});

Исправленный текст:

  • Выход (отмена входа) (доступен, необязательный)
WeiboGameSDKAPI.logout(act);

Этот метод очистит информацию входа из глобальной переменной SDK.

  • Проверка входа (доступен, необязательный)
WeiboGameSDKAPI.isLogin(act);
  • Выход (обязательный)
WeiboGameSDKAPI.exit(act, new SinaGameCallBack() {
    @Override
    public void onResult(int code, Object obj) {
        if (code == SUCCESS) {
            // Логика выхода
        }
    }
});

Когда код обратного вызова равен 1, это указывает на то, что пользователь нажал кнопку выхода в диалоговом окне выхода. В этом случае сторона, принимающая вызов, должна самостоятельно обрабатывать событие выхода, например, вызвать следующий код для завершения процесса:

MainActivity.this.finish();  
android.os.Process.killProcess(android.os.Process.myPid());
  • Переключение аккаунта (доступен, необязательный)
WeiboGameSDKAPI.switchAccount(act, new SinaGameCallBack() {
    @Override
    public void onResult(int code, Object obj) {
        // Результат обратного вызова аналогичен результату входа
    }
});
```* Оплата **(обязательный)**``` 
      /**
       * Платеж
       * @param act
       * @param amount Сумма в центах
       * @param subject Название товара
       * @param desc Описание товара
       * @param pt Прозрачный параметр, передается обратно серверу при асинхронном вызове, используется только для проверки, поэтому может быть любым значением.
       */
  WeiboGameSDKAPI. pay(act, amount, subject, desc, pt, new SinaGameCallBack() {
      @Override
      public void onResult(int code, Object obj) {
          switch (code) {
          case SUCESS:
             Toast.makeText(act, "Платеж успешен, номер заказа:" + obj.toString(), Toast.LENGTH_SHORT).show();
             break;
          case CANCEL:
             Toast.makeText(act, "Пользователь отменил платеж", Toast.LENGTH_SHORT).show();
             break;
          case TIMEOUT:
             Toast.makeText(act, "Уведомление о платеже не пришло вовремя, пожалуйста, используйте асинхронное уведомление сервера", Toast.LENGTH_SHORT).show();
             break;
          case START:
          case ERROR:
             Log.d(TAG, obj.toString());
             break;
          default:
             break;
          }
      }
  });
  • Проверка, является ли пользователь гостем (возвращает boolean) (доступно, опционально)
WeiboGameSDKAPI.isVisitor(act);
  • Получение возраста пользователя (возвращает int) (доступно, опционально)
WeiboGameSDKAPI.getUserAge(act);
  • Проверка, прошел ли пользователь верификацию (возвращает boolean) (доступно, опционально)
WeiboGameSDKAPI.isRealName(act);
  • Верификация имени пользователя (опционально)
WeiboGameSDKAPI.verfyRealname(act, new SinaGameCallBack() {
      @Override
      public void onResult(int code, Object obj) {
         код: 1 - успех, 0 - неудача
      }
  });
  • Регистрация слушателя выхода (опционально)
WeiboGameSDKAPI.registLogoutListener(new SinaGameCallBack() {
   @Override
   public void onResult(int code, Object obj) {
    }
});

Примечание: прозрачный параметр pt может быть любым значением, например "abc123". При успешном платеже будет асинхронно передан обратно серверу, и сервер получит информацию "abc123".

5. Пакетирование и тестирование

При пакетировании и тестировании, помимо входа в систему через Weibo, все остальные функции работают нормально. Поэтому при тестировании входа через Weibo, пожалуйста, используйте предоставленный нами keystore для подписи.

Пароль keystore: android  
Пароль ключа: androiddebugkey  
Пароль ключа: android  

Кроме того, для удобства тестирования во время разработки можно настроить использование пакета debug из SDK.

```keystore конфигурируется для использования по умолчанию в Eclipse, чтобы каждый запущенный отладочный пакет использовал официальную подпись, что позволяет нормально использовать вход через Weibo.
!  [Введите описание изображения](http://git.oschina.net/uploads/images/2015/0813/171103_14f8b950_483144.png "Вставьте заголовок изображения здесь")
  ### 6. Классы инструментов SDK  

String ip = WeiboGameSDKHelper.getIPAddress();
String machineId = WeiboGameSDKHelper.getMachineId(this);

 ### 7. Логи  
Используется "DEBUG" как метка фильтрации логов. В логах можно увидеть версию SDK, информацию о запросах к интерфейсу и т. д.  
![Введите описание изображения](http://git.oschina.net/uploads/images/2015/0813/171044_0cc7d1d1_483144.png "Вставьте заголовок изображения здесь")
  ### 8. Часто задаваемые вопросы
##### 1. Если при входе через Weibo отображается ошибка с кодом ошибки 21338, это может быть вызвано несоответствием между appkey, пакетом и keystore. Пожалуйста, проверьте, соответствуют ли эти три параметра.
##### 2. locSDK_xx.jar — это JAR-файл для локализации от Baidu, который необходим для работы с UnionPay. Его необходимо добавить в проект, иначе при попытке использования UnionPay будет отображаться ошибка (если другие SDK, интегрированные в игре, уже содержат locSDK_xx.jar, конфликтующий с этим, то этот JAR-файл не должен быть добавлен повторно).
##### 3. Ошибка: java.lang.ClassNotFoundException: com.weibo.game.sdk.SinaGameSDK
##### Причина: файл sinagame_res из пакета ресурсов не был скопирован в папку res/raw.
##### 4. Ошибка: java.lang.ClassNotFoundException: Не удалось найти класс "com.weibo.game.sdk.SinaGameSDK" в пути:
##### Причина: метод WeiboGameSDKAPI.init(this) не был вызван в методе onCreate активности.
##### 5. В AndroidManifest.xml файле H5PayActivity для Alipay зафиксирован в портретном режиме, так как его использование в ландшафтном режиме дает плохой опыт. Поэтому рекомендуется использовать только портретный режим.
##### 6. Если в вашем проекте есть несколько armeabi-xx директорий, пожалуйста, скопируйте все so-файлы в соответствующие директории или удалите другие armeabi-xx директории, используя только стандартную директорию armeabi.Это поможет уменьшить размер игры.
##### 7. Если вход через Weibo не работает, сначала проверьте параметры конфигурации, такие как значение sina_game_redirect в файле AndroidManifest.xml. Если это значение равно http://m.game.weibo.cn/oauth2/default, проверьте значение подписи, равное b6afc731feca47bb17338c7ba5b20b60. Если все параметры верны, обратитесь к нам.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/sinagamesdk-sinagamesdk-android.git
git@api.gitlife.ru:oschina-mirror/sinagamesdk-sinagamesdk-android.git
oschina-mirror
sinagamesdk-sinagamesdk-android
sinagamesdk-sinagamesdk-android
master