Esocial
Объект Esocial обеспечивает связь между приложением и Facebook'ом.
Содержание
Параметры
- facebook - ссылка на объект facebook, с которым будет работать объект
- esocialfriendsitem - ссылка на объект esocialfriendsitem, с которым будет работать объект
- таблица друзей - ссылка на таблицу, в которую будем клонировать esocialfriendsitem.
- индикатор активности - объект который видимый когда загружаются друзья. Видимость выключается, когда задача загрузки друзей выполнена (успех или провал не важно).
- опции для facebook - поле в опциях, куда мы будем записывать 32битное целое: Уровень + Коллекции.ESocial добавит к ним число друзей и засабмит при вызове соотв. состояние
- социальная сеть - выбор социальной сети с которой взаимодействовать. На данный момент можно выбрать facebook, google+ и обе.
- Инвайт
- Заголовок - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
- Сообщение - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
- Успешный инвайт
- Окно - Машина, открывающая форму, которая содержит информацию об успешно приглашенном друге. Должна иметь состояние show. На закрытие должна вызывать состояние next_inv объекту esocial
- Портрет - Объект, в который будет сложена иконка друга, подтянутая с facebook
- Имя - Объект, в который будет сложено имя друга, подтянутое с facebook
- Запрос подарка
- Текст - текстовый id, в котором будет хранится текст типа:"Мне нужны коллекционные предметы:". После ":" будут перечисляться предметы (названия будут браться из id коллекционных предметов), которые нужны игроку, через запятую.
- Таблица - таблица, в которую будут сложены желаемые предметы из окна коллекции для последующего поста их на стену.
- Отправка подарка
- Заголовок - Заголовок сообщения, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
- Сообщение - Сообщение, которое увидит пользователь в фейсбуке, перетаскивается из текстового редактора
- Ограничение - максимальное количество отправленных подарков в день (может быть сброшено).
- Окно дарения из окна коллекций
- окно - машина состояния, которая будет показывать окно. Должна иметь состояние open.
- иконка - объект, в который будет помещена иконка предмета, который мы хотим подарить другому игроку.
- текст (объект) - текстовый объект, в который сложится название предмета, который мы хотим подарить другу.
- описание (объект) - текстовый объект, в который сложится описание предмета, который мы хотим подарить другу.
- esocialfrienditem - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу в окне с подарком другу.
- таблица друзей - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem.
- Окно дарения с двумя списками
- esocialfrienditem - объект типа esocialfriendsitem (темплейт друга в таблице), который заполнит таблицу друзей.
- таблица друзей - ссылка на таблицу в которую мы клонируем объект esocialfriendsitem из поля выше.
- esocialgiftitem - объект типа esocialgiftitem (темплейт подарка в таблице), который заполнит таблицу подарков.
- таблица подарков - ссылка на таблицу в которую мы клонируем объект esocialgiftitem из поля выше.
- Изменить состояние объекта при принятии инвайта - при успешном принятии приглашения (друг установил приложение) переводит объект в состояние.
- Изменить состояние объекта при успешном выполнении задачи - при успешном выполнении задачи переводит объект в состояние
- Изменить состояние объекта при ошибке выполнения задачи - при ошибке выполнения задачи переводит объект в состояние
Состояния
- 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 - Обновить информацию о подарке в соотв. иконках и каунтерах
Debug
Для того, что бы отслеживать работу объекта Facebook в папке Documents создаются три файла, которые хранят в себе все знания относительно друзей данного пользователя, их коллекций и уровня:
- facebook_debug_e.xml - создается во время отправки приглашения и при вызове состояния invite
- facebook_debug_s.xml - создается после фидбэка от Facebook'a.
- facebook_debug.xml - создается исключительно в дебажной версии во время отправки объекту Facebook состояния friends или friends_inst
Выглядит этот файл приблизительно вот так:
Поля:
request означает отправлен ли запрос.
invite - принял ли запрос и поле
inst(возможна ошибка в названии) - установлено ли приложение у данного друга.
Задачи (команды) и ошибки
В опции пишется номер успешной задачи, неуспешной и номер ошибки
- esocial%d.compl_task - поле в опциях, куда запишется номер успешно выполненной задачи. %d - id объекта esocial в проекте.
- esocial%d.err_task - поле в опциях, куда запишется номер неуспешной задачи. %d - id объекта esocial в проекте.
- esocial%d.err_code - поле в опциях, куда запишется номер ошибки. %d - id объекта esocial в проекте.
Задачи
- 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) - проверить текущие ачивки пользователя
Ошибки
Если ошибка на гугловом устройстве, то к коду добавляется 1000, к примеру ошибка с кодом 9 на гугле будет 1009.
- 0 - неизвестная ошибка
- 1 - неизвестная задача
- 2 - facebook не поддерживается
- 3 - нет интернета
- 4 - превышен лимит ожидания запроса
- 5 - не указаны параметры для выполнения задачи
- 6 - отмена диалогового окна пользователем
- 7 - ошибка логина
- 8 - ошибка авторизации
- 9 - ошибка прав доступа
Пример запроса:
- подали запрос выполнить задачу (например 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' (изменить состояние объекта - заполнена таблица с подарками)