Esocial

Материал из wiki.appsalutecreator.com
Версия от 09:53, 18 декабря 2019; Agava (обсуждение | вклад) (Отправка подарка)

Перейти к: навигация, поиск

Объект Esocial обеспечивает связь между приложением и Facebook'ом.


Параметры

Esocial full.jpg
  • facebook - ссылка на объект facebook, с которым будет работать объект
  • esocialfriendsitem - ссылка на объект esocialfriendsitem, с которым будет работать объект
  • таблица друзей - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.
  • индикатор активности - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).
  • опции для facebook - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
  • социальная сеть - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.
  • специальные подарки
    • подарок энергия id - id предметы из экономики;
    • подарок энергия количество - количество;
    • учитывать максимум энергии - если да, то не будет начисляться энергия выше максимума;


  • Инвайт
    • Заголовок - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
    • Сообщение - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора


  • Успешный инвайт
    • Окно - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial
    • Портрет - Объект, в который будет сложена иконка друга, подтянутая с facebook
    • Имя - Объект, в который будет сложено имя друга, подтянутое с facebook


  • Запрос подарка
    • Текст - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
    • Таблица - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.


  • Отправка подарка
    • Заголовок - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
    • Сообщение - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
    • Ограничение - максимальное количество отправленных подарков в день (может быть сброшено).


  • Окно дарения из окна коллекций
    • окно - машина состояния, которая будет показывать окно. Должна иметь состояние open.
    • иконка - объект, в который будет помещена иконка предмета, который мы хотим подарить другому игроку.
    • текст (объект) - текстовый объект, в который сложится название предмета, который мы хотим подарить другу.
    • описание (объект) - текстовый объект, в который сложится описание предмета, который мы хотим подарить другу.
    • esocialfrienditem - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.
    • таблица друзей - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.


  • Окно дарения с двумя списками
    • esocialfrienditem - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.
    • таблица друзей - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem из поля выше.
    • esocialgiftitem - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.
    • таблица подарков - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.


  • Изменить состояние объекта при принятии инвайта - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.
  • Изменить состояние объекта при успешном выполнении задачи - при успешном выполнении задачи переводит объект в состояние
  • Изменить состояние объекта при ошибке выполнения задачи - при ошибке выполнения задачи переводит объект в состояние
  • изменить состояние объекта - дарим энергию выше max - обработчик применения энергии, когда дошли за максимум (сработает если учитывать максимум энергии);

В опции пишутся параметры инвайтов:

  • esocial%d.max_invite_total - всего инвайтов отправлено
  • esocial%d.max_invite_this - за последнюю отправку

вместо %d - айдишник объекта

Можно проверять в "nst_invite_sent"

Состояния

  • 0. ready - состояние готовности
  • 1. friends
  • 2. friends_debug - добавляем фейковых друзей
  • 3. friends_inst - заполнить таблицу друзьями с установленной игрой
  • 4. friends_not_inst - заполнить таблицу друзьями с неустановленной игрой
  • 5. report - заслать полезную информацию (32бита)
  • 6. invite - показать окно инвайта
  • 7. cancel - отменить весь стек задач
  • 8. retry - повторить текущую задачу
  • 9. continue_fb - пропустить текущую задачу и перейти к следующей
  • 10. continue_google - пропустить текущую задачу и перейти к следующей
  • 11. next_inv - следующее окошко успешного инвайта
  • 12. gift - показать окно посылки подарка из окна коллекций
  • 13. gift_confirm - в окне посылки гифта из окна коллекций нажали кнопку ок
  • 14. wish - запостить на стену "попрошайку"
  • 15. check_requests - проверить реквесты от других пользователей
  • 16. next_gift - следующее окошко про полученный подарок17.
  • 17. refresh_gifts - актуализировать содержимое таблицы гифтов
  • 18. refresh_vip_gifts - актуализировать содержимое таблицы гифтов используя исключительно вип подарки
  • 19. gift_send - послать подарок из окна с двумя таблицами
  • 20. logout - разлогиниться из фейсбука удалив всю информацию о друзьях
  • 21. clear_gifts - сбросить ограничения на число подарков
  • 22. wish_table - добавить пожелание в таблицу пожеланий
  • 23. wish_all - пожелать все содержимое таблицы в фейсбук //Теперь только в фейсбук, а для гугла состояние ниже
  • 24. remove_gift - убрать подарок из таблицы
  • 25. gift_fb - подарить текущий подарок через фейбук используя нативный интерфейс фейсбука (т.е. так как сейчас работает гугл, без таблицы друзей)
  • 26. gift_info - Обновить информацию о текущих подарках в специальном окне
  • 27. gift_lb - Показать окно подарка из лидерборда
  • 28. gift_send_lb - Подтвердить отсылку подарка из лидерборда
  • 29. gift_receive - Получить подарок из окна получения подарков
  • 30. invite_lb - Послать приглашение другу из лидербордов
  • 31. get_me_google - запросить информацию о себе с гугла
  • 32. friends_inst_google - заполнить таблицу друзьями с установленной игрой
  • 33. friends_not_inst_google - заполнить таблицу друзьями с неустановленной игрой
  • 34. message_friend - послать другу уведомление
  • 35. friends_random - заполнить таблицу случайных друзей
  • 36. wish_all_google - пожелать все содержимое таблицы в гугл
  • 37. get_me_fb - запросить информацию о себе с фейсбука
  • 38. check_requests_fb - проверить реквесты от других пользователей для fb
  • 39. check_requests_google - проверить реквесты от других пользователей для гугл
  • 40. logout_google - разлогиниться из гугла, удалив всю информацию о друзьях
  • 41. gift_parse - Показать окно подарка из парсовой таблицы друзей
  • 42. gift_send_parse - Подтвердить отсылку подарка из парсовой таблицы друзей
  • 43. gift_parse_energy - Показать окно подарка энергии из парсовой таблицы друзей
  • 44. gift_parse_vip - Подарок вип-подарка из окна лидербордов
  • 45. gift_parse_res1 - Подарок монет из окна лидербордов
  • 46. gift_receive_no_delete - Получить подарок из окна получения подарков без запроса
  • 47. gift_reply_energy - Послать в ответ энергию.
  • 48. gift_reply_more - Промотать таблицу подарков в клауде на нужного юзера
  • 49. gift_reply_res1 - Послать в ответ ресурс1.
  • 50. gift_reply_universal - ответить тем же, что прислали
  • 51. gift_reply_vip - Послать в ответ vip.
  • 52. invite_parse - Послать приглашение другу из парса (но из общей таблицы, не из лидербордов)
  • 53. gift_parse_res1_multiple - отправить множественный подарок в виде монет
  • 54. gift_parse_item_multiple - отправить множественный подарок в виде предмета, взяв его из поля gift_param
  • 55. post_story - фоновое сообщение
  • 56. external_like - "внешнее" окошко лайка
  • 57. clear_timeouts - обнулить таймауты для некоторых тасков
  • 58. refresh_inv_gifts - актуализировать содержимое таблицы инвентарных гифтов
  • 59. wish_inv_add - добавить предмет из таблицы инвентарных в вишлист
  • 60. wish_inv_remove - убрать предмет из таблицы инвентарных в вишлист
  • 61. gift_parse_refresh - Обновить информацию о подарке в соотв. иконках и каунтерах
  • 62. check_requests_abs - проверить реквесты от других пользователей, но только parse
  • 63. switch_social_network - переключить активную социальную сеть, взяв ее айдишник из param
  • 64. invite_random - показать окно инвайта для случайных друзей
  • 66. join_community - пригласиться к группе, задать в параметр joincommunity id группы (для ВК).

Debug

Для того, что бы отслеживать работу объекта Facebook в папке Documents создаются три файла, которые хранят в себе все знания относительно друзей данного пользователя, их коллекций и уровня:
- facebook_debug_e.xml - создается во время отправки приглашения и при вызове состояния invite
- facebook_debug_s.xml - создается после фидбэка от Facebook'a.
- facebook_debug.xml - создается исключительно в дебажной версии во время отправки объекту Facebook состояния friends или friends_inst Выглядит этот файл приблизительно вот так:

17-03-2014 11-09-06.png

Поля:
request означает отправлен ли запрос.
invite - принял ли запрос и поле
inst(возможна ошибка в названии) - установлено ли приложение у данного друга.





Задачи (команды) и ошибки

В опции пишется номер успешной задачи, неуспешной и номер ошибки

  • esocial%d.compl_task - поле в опциях, куда запишется номер успешно выполненной задачи. %d - id объекта esocial в проекте.
  • esocial%d.err_task - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.
  • esocial%d.err_code - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.


Задачи

При выполнении состояния Esocial пишет в лог следующее:

onComplete state = %d task = %d,

где номер таска берется из следующего списка (состояния Facebook):

  • 0 - провести авторизацию
  • 1 - закрыть текущую авторизованную сессию
  • 2 - создать диалог для отправки на стену
  • 3 - возвращает данные обо мне
  • 4 - возвращает данные о друзьях
  • 5 - возвращает данные о друзьях, которых можно пригласить в игру
  • 6 - получить список игровых сообщений
  • 7 - получить список групп пользователя
  • 8 - лайкал пользователь приложение или нет
  • 9 - обновить мои очки на facebook сервере
  • 10 - отправить игровое сообщение
  • 11 - удалить игровое сообщение на facebook сервере
  • 12 - отправить фоновое сообщение в ленту пользователя

След. сост. выполняются автоматически, если необходимо:

  • 13 - (ST_AUTO_CHECK_USER_PERMISSIONS) - получить список прав которые пользователь предоставил преложению
  • 14 - (ST_AUTO_CHECK_APP_PERMISSIONS) - получить список прав которые facebook предоставил преложению
  • 15 - (ST_AUTO_GET_WRITE_PERMISSIONS) - запросить у пользователя права на запись
  • 16 - (ST_AUTO_GET_READ_PERMISSIONS) - запросить у пользователя права на чтение
  • 17 - (ST_AUTO_POST_APP_REQUEST) - отправить application request пользователю
  • 18 - (ST_AUTO_CHECK_USER_ACHIEVEMENTS) - проверить текущие ачивки пользователя
  • 19 - (ST_CHANGE_SOCIAL_NETWORK) - изменить соц сеть


Ошибки

Если ошибка на гугловом устройстве, то к коду добавляется 1000, к примеру ошибка с кодом 9 на гугле будет 1009.


  • 0 - неизвестная ошибка
  • 1 - неизвестная задача
  • 2 - facebook не поддерживается
  • 3 - нет интернета
  • 4 - превышен лимит ожидания запроса
  • 5 - не указаны параметры для выполнения задачи
  • 6 - отмена диалогового окна пользователем
  • 7 - ошибка логина
  • 8 - ошибка авторизации
  • 9 - ошибка прав доступа

Для обработки ошибок использовать ErrorManager.


Пример запроса:

  • подали запрос выполнить задачу (например ST_GET_FRIENDS)
  • сначала проверяем есть ли права у приложения facebook (ST_AUTO_CHECK_APP_PERMISSIONS)
  • потом проверяем есть ли права от пользователя (ST_AUTO_CHECK_USER_PERMISSIONS)
  • если пользователь не давал прав, то просим (ST_AUTO_GET_READ_PERMISSIONS)
  • потом снова проверяем дал ли нам пользователь права (ST_AUTO_CHECK_USER_PERMISSIONS)
  • если весь цикл прошел успешно, то возвращаемся к поставленной задаче (ST_GET_FRIENDS)

ВАЖНО: Если в любом месте произошел сбой, то ты НЕ увидишь конкретное состояние, ты увидишь только что "ST_GET_FRIENDS" отработал с ошибкой "9" или словами "ERR_PERMISSION". Других логик или кодов там нет.

Слушатели заполнения таблиц

Чтобы узнать когда окончательно заполниться таблица, нужно подвязать слушателя в нужном месте:

  • Таблица лидеров:
    • Cloud.table - добавляемое свойство объекту 'Cloud' успешно загружены лидерборды;
  • Друзья и подарки:
    • Cloud.table_fr - добавляемое свойство объекту 'Cloud' успешно загружены друзья;
  • Неиграющие друзья:
    • Esocial.friendsnotinst - машинка-слушатель успеха объекта 'Esocial 'состояние 5 (изменить состояние объекта - успех задачи)
  • Окно приёма подарка ( заполненность таблицы проверям у объекта "esocial" параметры "new_gifts" и "all_gifts"):
    • Esocial.giftreceivetable - машинка-слушатель объекта 'Esocial' (изменить состояние объекта - заполнена таблица с подарками)


Записи в логах

Отправка подарка

  21/3/2017 13:8:59.800: I/GESocial state() state 42 
  21/3/2017 13:8:59.800: I/GESocial state() New social system state = 42 gift = 11674 starting to search usid 
  21/3/2017 13:8:59.800: I/GESocial state() New social system state = 42 fb login = 1 gc login = 0 
  21/3/2017 13:8:59.800: I/GESocial state() state 13 
  21/3/2017 13:8:59.800: I/GESocial state() STATE_GIFT_CONFIRM gift = 11674 
  21/3/2017 13:8:59.800: I/GESocial state() STATE_GIFT_CONFIRM Got id from param, id = 258188181311449 
  21/3/2017 13:8:59.801: I/GESocial load() load curTime = 1492769339 saveTime = 1492769335 (curTime - saveTime) = 4 
  21/3/2017 13:8:59.801: I/GESocial state() STATE_GIFT_CONFIRM _giftsCur = 0, gift = 11674, id = 258188181311449, _giftsLimit = 50 
  21/3/2017 13:8:59.801: I/GESocial state() STATE_GIFT_CONFIRM soc_net == netFacebook id = 258188181311449, data = 3,241016273040597,11674 
  21/3/2017 13:8:59.805: I/GESocial state() Viber request gift urlId = -1, url = , text =  
  21/3/2017 13:8:59.808: I/GFacebook stPostRequest() stPostRequest -> title = Gift!, message = Иван Козаченко: Here is a gift for you!, data =    3,241016273040597,11674, userId = 258188181311449, 

excludeUserIds = , frictionless = 1, type = 2, forcedLogin=1