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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Параметры)
(Отправка подарка)
(не показано 46 промежуточных версий 8 участников)
Строка 1: Строка 1:
Объект обеспечивает связь между приложением и Facebook'ом.
+
[[Object|Объект]] '''Esocial''' обеспечивает связь между приложением и Facebook'ом.
 +
 
  
 
=Параметры=
 
=Параметры=
 +
  
 
[[Файл:Esocial_full.jpg|right]]
 
[[Файл:Esocial_full.jpg|right]]
*'''facebook''' - ссылка на объект facebook, с которым будет работать объект
+
*'''facebook''' - ссылка на объект [[facebook]], с которым будет работать объект
 
*'''esocialfriendsitem''' - ссылка на объект esocialfriendsitem, с которым будет работать объект
 
*'''esocialfriendsitem''' - ссылка на объект esocialfriendsitem, с которым будет работать объект
 
*'''таблица друзей''' - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.
 
*'''таблица друзей''' - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.
 +
*'''индикатор активности''' - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).
 
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
 
*'''опции для facebook''' - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
 +
*'''социальная сеть''' - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.
 +
 +
*'''специальные подарки'''
 +
**'''подарок энергия id''' - id предметы из экономики;
 +
**'''подарок энергия количество''' - количество;
 +
**'''учитывать максимум энергии''' - если да, то не будет начисляться энергия выше максимума;
 +
 +
 
*'''Инвайт'''
 
*'''Инвайт'''
 
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 +
 +
 
*'''Успешный инвайт'''
 
*'''Успешный инвайт'''
 
**'''Окно''' - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial
 
**'''Окно''' - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial
 
**'''Портрет''' - Объект, в который будет сложена иконка друга, подтянутая с facebook
 
**'''Портрет''' - Объект, в который будет сложена иконка друга, подтянутая с facebook
 
**'''Имя''' - Объект, в который будет сложено имя друга, подтянутое с facebook
 
**'''Имя''' - Объект, в который будет сложено имя друга, подтянутое с facebook
 +
 +
 
*'''Запрос подарка'''
 
*'''Запрос подарка'''
 
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
 
**'''Текст'''  - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
 +
**'''Таблица'''  - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.
 +
 +
 
*'''Отправка подарка'''
 
*'''Отправка подарка'''
 
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Заголовок''' - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 
**'''Сообщение''' - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
 +
**'''Ограничение''' - максимальное количество отправленных подарков в день (может быть сброшено).
 +
 +
 
*'''Окно дарения из окна коллекций'''
 
*'''Окно дарения из окна коллекций'''
 
**'''окно''' - машина состояния, которая будет показывать окно. Должна иметь состояние open.
 
**'''окно''' - машина состояния, которая будет показывать окно. Должна иметь состояние open.
Строка 27: Строка 48:
 
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.
 
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.
 
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.
 
**'''таблица друзей''' - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.
 +
 +
 
*'''Окно дарения с двумя списками'''
 
*'''Окно дарения с двумя списками'''
 
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.
 
**'''esocialfrienditem ''' - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.
Строка 32: Строка 55:
 
**'''esocialgiftitem ''' - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.
 
**'''esocialgiftitem ''' - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.
 
**'''таблица подарков''' - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.
 
**'''таблица подарков''' - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.
 +
  
 
*'''Изменить состояние объекта при принятии инвайта''' - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.
 
*'''Изменить состояние объекта при принятии инвайта''' - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.
 
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние
 
*'''Изменить состояние объекта при успешном выполнении задачи''' - при успешном выполнении задачи переводит объект в состояние
 
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние
 
*'''Изменить состояние объекта при ошибке выполнения задачи''' - при ошибке выполнения задачи переводит объект в состояние
 +
*'''изменить состояние объекта - дарим энергию выше max''' - обработчик применения энергии, когда дошли за максимум (сработает если '''учитывать максимум энергии''');
 +
 +
В опции пишутся параметры инвайтов:
 +
 +
*'''esocial%d.max_invite_total''' - всего инвайтов отправлено
 +
*'''esocial%d.max_invite_this''' - за последнюю отправку
 +
 +
вместо %d - айдишник объекта
 +
 +
Можно проверять в "nst_invite_sent"
  
 
=Состояния=
 
=Состояния=
*'''friends''' - В этом состоянии вызывается авторизация к фейсбуку и заполняются ячейки "таблицы друзей" в соответствии с указанным шаблоном. Отображаются абсолютно ВСЕ друзья, которые есть у пользователя на данный момент
+
 
*'''friends_debug''' - Вызывает объекту ESocial дебажную версию заполнения таблицы. В которой мы можем увидеть, как будут располагаться наши расклонированные шаблоны в кол-ве 50 штук. Состояние создано исключительно для теста внешнего вида клонированных объектов
+
 
*'''friends_inst''' - В этом состоянии вызывается авторизация к фейсбуку и заполняются ячейки "таблицы друзей" в соответствии с указанным шаблоном. Отображаются только друзья, которые установили себе приложение.
+
*0. '''ready'''                      -  состояние готовности
*'''invite''' - состояние, которое желательно вызывать по нажатию на кнопку. При вызове которого открывается фейсбуковское окно, в котором у пользователя появляется возможно выбрать друзей и отправить им приглашение.
+
*1. '''friends'''
*'''report''' - при вызове данного состояния фесбуку передается знание о текущем уровне и количестве коллекций
+
*2. '''friends_debug'''              -  добавляем фейковых друзей
*'''cancel''' - отменяет последовательность всех текущих задач
+
*3. '''friends_inst'''                -  заполнить таблицу друзьями с установленной игрой
*'''retry''' - повторить попытку выполнить текущую задачу
+
*4. '''friends_not_inst'''            - заполнить таблицу друзьями с неустановленной игрой
*'''continue''' - отменить текущую задачу и перейти к выполнению следующей в очереди
+
*5. '''report'''                      -  заслать полезную информацию (32бита)
*'''gift_confirm''' - подтверждает отправку другу подарка
+
*6. '''invite'''                      -  показать окно инвайта
*'''check_requests''' - проверяет не пришел ли нам подарок от друга
+
*7. '''cancel'''                      -  отменить весь стек задач
*'''refresh_gifts''' - заполняет таблицу с возможными подарками другу
+
*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=
Строка 73: Строка 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 - провести авторизацию
Строка 81: Строка 180:
 
*3 - возвращает данные обо мне
 
*3 - возвращает данные обо мне
 
*4 - возвращает данные о друзьях
 
*4 - возвращает данные о друзьях
*5 - получить список игровых сообщений
+
*5 - возвращает данные о друзьях, которых можно пригласить в игру
*6 - обновить мои очки на facebook сервере
+
*6 - получить список игровых сообщений
*7 - отправить игровое сообщение
+
*7 - получить список групп пользователя
*8 - удалить игровое сообщение на facebook сервере
+
*8 - лайкал пользователь приложение или нет
*9 - узнать есть ли права на запись у пользователя
+
*9 - обновить мои очки на facebook сервере
*10 - запросить у пользователя права на запись
+
*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 - неизвестная ошибка
 
*0 - неизвестная ошибка
Строка 97: Строка 211:
 
*5 - не указаны параметры для выполнения задачи
 
*5 - не указаны параметры для выполнения задачи
 
*6 - отмена диалогового окна пользователем
 
*6 - отмена диалогового окна пользователем
 +
*7 - ошибка логина
 +
*8 - ошибка авторизации
 +
*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]]

Версия 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