Esocial — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Отправка подарка)
(не показано 26 промежуточных версий 4 участников)
Строка 1: Строка 1:
 
[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.
 
[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.
 +
  
 
=Параметры=
 
=Параметры=
 +
  
 
[[Файл:Esocial_full.jpg|right]]
 
[[Файл:Esocial_full.jpg|right]]
Строка 10: Строка 12:
 
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
 
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
 
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.
 
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.
 +
 +
*'''специальные подарки'''
 +
**'''подарок энергия id''' - id предметы из экономики;
 +
**'''подарок энергия количество''' - количество;
 +
**'''учитывать максимум энергии''' - если да, то не будет начисляться энергия выше максимума;
  
  
Строка 26: Строка 33:
 
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
 
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
 
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.
 
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.
 +
  
 
*'''Отправка подарка'''
 
*'''Отправка подарка'''
Строка 31: Строка 39:
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).
 
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).
 +
  
 
*'''Окно дарения из окна коллекций'''
 
*'''Окно дарения из окна коллекций'''
Строка 51: Строка 60:
 
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние
 
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние
 
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние
 
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние
 +
*'''изменить состояние объекта - дарим энергию выше max''' - обработчик применения энергии, когда дошли за максимум (сработает если '''учитывать максимум энергии''');
  
 +
В опции пишутся параметры инвайтов:
  
=Состояния=
+
*'''esocial%d.max_invite_total''' - всего инвайтов отправлено
 +
*'''esocial%d.max_invite_this''' - за последнюю отправку
  
*'''friends''' - В этом состоянии вызывается авторизация к фейсбуку и заполняются ячейки "таблицы друзей" в соответствии с указанным шаблоном. Отображаются абсолютно ВСЕ друзья, которые есть у пользователя на данный момент
+
вместо %d - айдишник объекта
*'''friends_debug''' - Вызывает объекту ESocial дебажную версию заполнения таблицы. В которой мы можем увидеть, как будут располагаться наши расклонированные шаблоны в кол-ве 50 штук. Состояние создано исключительно для теста внешнего вида клонированных объектов
 
*'''friends_inst''' - В этом состоянии вызывается авторизация к фейсбуку и заполняются ячейки "таблицы друзей" в соответствии с указанным шаблоном. Отображаются только друзья, которые установили себе приложение.
 
*'''invite''' - состояние, которое желательно вызывать по нажатию на кнопку. При вызове которого открывается фейсбуковское окно, в котором у пользователя появляется возможно выбрать друзей и отправить им приглашение.
 
*'''report''' - при вызове данного состояния фесбуку передается знание о текущем уровне и количестве коллекций
 
*'''cancel''' - отменяет последовательность всех текущих задач
 
*'''retry''' - повторить попытку выполнить текущую задачу
 
*'''continue''' - отменить текущую задачу и перейти к выполнению следующей в очереди
 
*'''gift_confirm''' - подтверждает отправку другу подарка
 
*'''gift_fb''' - открывает окошко со списком друзей, кому можно отправить подарок. Можно выбрать сразу несколько друзей.
 
*'''check_requests''' - проверяет не пришел ли нам подарок от друга
 
*'''next_gift''' - показывает следующий подарок в списке, если нам их пришло несколько.
 
*'''refresh_gifts''' - заполняет таблицу с возможными подарками другу
 
*'''gift_send''' - вызывается при отправке подарка из окна с двумя таблицами (предметов и друзей)
 
*'''clear_gifts''' - сбрасывает ограничения на количество подарков в день
 
*'''wish_all''' - постит на стену фейсбука набор желаемых предметов из таблицы в группе "запрос подарка"
 
*'''gift_info''' - заполняет поля информацией о предмете который дарим в разделе "окно дарения с двумя списками"
 
*'''remove_gift''' - удаляет предмет на который тапнули из таблицы желаний. Вызывать это сотояние нужно в следующем тике таймера после нажатия на таблицу (отложить вызов по wait).
 
*'''friends_not_inst''' - заполнить таблицу друзьями с неустановленной игрой c фейсбука
 
*'''get_me_fb''' - запросить информацию о себе с фейсбука.
 
*'''logout''' - разлогиниться из фейсбука удалив всю информацию о друзьях.
 
*'''get_me_google''' - запросить информацию о себе с гугла.
 
*'''logout_google''' - разлогиниться из гугла, удалив всю информацию о друзьях.
 
*'''friends_not_inst_google''' - заполнить таблицу друзьями с неустановленной игрой с гугла.
 
*'''wish_all_google''' - пожелать все содержимое таблицы в гугл.
 
*'''check_requests_fb''' - проверить реквесты от других пользователей для fb.
 
*'''friends_not_inst_fb''' - заполнить таблицу друзьями с неустановленной игрой.
 
*'''friends_not_inst_google''' - заполнить таблицу друзьями с неустановленной игрой.
 
*'''check_requests_google''' - проверить реквесты от других пользователей для гугл.
 
*'''get_me_google''' - запросить информацию о себе с гугла.
 
*'''gift_lb''' - Показать окно подарка из лидерборда.
 
*'''gift_receive''' - Получить подарок из окна получения подарков.
 
*'''gift_send_lb''' - Подтвердить отсылку подарка из лидерборда.
 
*'''gift_confirm''' - в окне посылки гифта из окна коллекций нажали кнопку ок.
 
*'''invite_lb''' - Послать приглашение другу из лидербордов.
 
*'''next_inv''' - следующее окошко успешного инвайта.
 
*'''continue_google''' - пропустить текущую задачу и перейти к следующей.
 
  
 +
Можно проверять в "nst_invite_sent"
  
==Запись состояний в логи==
+
=Состояния=
 
 
0. STATE_READY, //!< состояние готовности
 
 
 
1. STATE_FRIENDS,
 
 
 
2. STATE_FRIENDS_DEBUG, //!< добавляем фейковых друзей
 
 
 
3. STATE_FRIENDS_INST, //!< заполнить таблицу друзьями с установленной игрой
 
 
 
4. STATE_FRIENDS_NOT_INST, //!< заполнить таблицу друзьями с неустановленной игрой
 
 
 
5. STATE_REPORT, //!< заслать полезную информацию (32бита)
 
 
 
6. STATE_INVITE, //!< показать окно инвайта
 
 
 
7. STATE_CANCEL, //!< отменить весь стек задач
 
 
 
8. STATE_RETRY, //!< повторить текущую задачу
 
  
9. STATE_CONTINUE_FB, //!< пропустить текущую задачу и перейти к следующей
 
 
10. STATE_CONTINUE_GOOGLE, //!< пропустить текущую задачу и перейти к следующей
 
 
11. STATE_NEXT_INV, //!< следующее окошко успешного инвайта
 
 
12. STATE_GIFT, //!< показать окно посылки подарка из окна коллекций
 
 
13. STATE_GIFT_CONFIRM, //!< в окне посылки гифта из окна коллекций нажали кнопку ок
 
 
14. STATE_WISH, //!< запостить на стену "попрошайку"
 
 
15. STATE_CHECK_REQUESTS, //!< проверить реквесты от других пользователей
 
 
16. STATE_NEXT_GIFT, //!< следующее окошко про полученный подарок
 
 
17. STATE_REFRESH_GIFTS, //!< актуализировать содержимое таблицы гифтов
 
 
18. STATE_REFRESH_VIP_GIFTS, //!< актуализировать содержимое таблицы гифтов используя исключительно вип подарки
 
 
19. STATE_GIFT_SEND, //!< послать подарок из окна с двумя таблицами
 
 
20. STATE_LOGOUT, //!< разлогиниться из фейсбука удалив всю информацию о друзьях
 
 
21. STATE_CLEAR_GIFTS, //!< сбросить ограничения на число подарков
 
 
22. STATE_WISH_TABLE, //!< добавить пожелание в таблицу пожеланий
 
 
23. STATE_WISH_ALL, //!< пожелать все содержимое таблицы в фейсбук
 
 
24. STATE_REMOVE_GIFT, //!< убрать подарок из таблицы
 
 
25. STATE_GIFT_FB, //!< подарить текущий подарок через фейбук используя нативный интерфейс фейсбука (т.е. так как сейчас работает гугл, без таблицы друзей)
 
 
26. STATE_GIFT_INFO, //!< Обновить информацию о текущих подарках в специальном окне
 
 
27. STATE_GIFT_LB, //!< Показать окно подарка из лидерборда
 
 
28. STATE_GIFT_SEND_LB, //!< Подтвердить отсылку подарка из лидерборда
 
 
29. STATE_GIFT_RECEIVE, //!< Получить подарок из окна получения подарков
 
 
30. STATE_INVITE_LB, //!< Послать приглашение другу из лидербордов
 
 
31. STATE_GET_ME_GOOGLE, //!< запросить информацию о себе с гугла
 
 
32. STATE_FRIENDS_INST_GOOGLE, //!< заполнить таблицу друзьями с установленной игрой
 
 
33. STATE_FRIENDS_NOT_INST_GOOGLE, //!< заполнить таблицу друзьями с неустановленной игрой
 
 
34. STATE_MESSAGE_FRIEND, //!< послать другу уведомление
 
 
35. STATE_FRIENDS_RANDOM, //!< заполнить таблицу случайных друзей
 
 
36. STATE_WISH_ALL_GOOGLE, //!< пожелать все содержимое таблицы в гугл
 
 
37. STATE_GET_ME_FB, //!< запросить информацию о себе с фейсбука
 
 
38. STATE_CHECK_REQUESTS_FB, //!< проверить реквесты от других пользователей для fb
 
 
39. STATE_CHECK_REQUESTS_GOOGLE, //!< проверить реквесты от других пользователей для гугл
 
 
40. STATE_LOGOUT_GOOGLE, //!< разлогиниться из гугла, удалив всю информацию о друзьях
 
 
41. STATE_GIFT_PARSE, //!< Показать окно подарка из парсовой таблицы друзей
 
 
42. STATE_GIFT_SEND_PARSE, //!< Подтвердить отсылку подарка из парсовой таблицы друзей
 
 
43. STATE_GIFT_PARSE_ENERGY, //!< Показать окно подарка энергии из парсовой таблицы друзей
 
 
44. STATE_GIFT_PARSE_VIP, //!< Подарок вип-подарка из окна лидербордов
 
 
45. STATE_GIFT_PARSE_RES1, //!< Показать окно подарка монет из парсовой таблицы друзей
 
 
46. STATE_GIFT_RECEIVE_NO_DELETE, //!< Получить подарок из окна получения подарков, без удаления запроса
 
 
47. STATE_GIFT_REPLY_ENERGY, //!< Послать в ответ энергию
 
 
48. STATE_GIFT_REPLY_MORE, //!< Промотать таблицу подарков в клауде на нужного юзера
 
 
49. STATE_GIFT_REPLY_RES1, //!< Послать в ответ монеты
 
 
50. STATE_GIFT_REPLY_VIP, //!< Послать в ответ монеты
 
 
51. STATE_INVITE_PARSE, //!< Послать приглашение другу из парса (но из общей таблицы, не из лидербордов)
 
 
52. STATE_GIFT_PARSE_RES1_MULTIPLE, //!< Послать в подарок монетки парсовым друзьям с поддержкой множественного выделения
 
 
53. STATE_GIFT_PARSE_ITEM_MULTIPLE //!< отправить множественный подарок в виде предмета, взяв его из поля gift_param
 
 
54. STATE_GIFT_PARSE_REFRESH //!< вызвать окно подтверждения отправки VIP подарка
 
  
 +
*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=
 
=Debug=
Строка 231: Строка 165:
 
*'''esocial%d.err_task''' - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.
 
*'''esocial%d.err_task''' - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.
 
*'''esocial%d.err_code''' - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.
 
*'''esocial%d.err_code''' - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.
 +
  
 
==Задачи==
 
==Задачи==
 +
 +
При выполнении состояния Esocial пишет в лог следующее:
 +
 +
''onComplete state = %d task = %d,''
 +
 +
где номер таска берется из следующего списка (состояния Facebook):
  
 
*0 - провести авторизацию
 
*0 - провести авторизацию
Строка 247: Строка 188:
 
*11 - удалить игровое сообщение на facebook сервере
 
*11 - удалить игровое сообщение на facebook сервере
 
*12 - отправить фоновое сообщение в ленту пользователя
 
*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) - изменить соц сеть
 +
 +
  
 
==Ошибки==
 
==Ошибки==
Строка 262: Строка 214:
 
*8 - ошибка авторизации
 
*8 - ошибка авторизации
 
*9 - ошибка прав доступа
 
*9 - ошибка прав доступа
 +
 +
Для обработки ошибок использовать [[Errormanager|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
 +
 +
  
 
[[Category:Facebook]]
 
[[Category:Facebook]]

Версия 22:56, 19 января 2020

Объект 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