Інтеграція Unity з Facebook

Нарешті це сталось! Сьогодні на вас чекає стаття з кодом. Гіп-гіп ура! Вона стала результатом палких двохтижневих стосунків з Facebook SDK та Facebook API. Сподіваюся, що наведені тут відомості стануть вам у нагоді. Щоправда, як показує практика, з наступним апдейтом FB SDK все може змінитися, тому налітайте, поки гаряче.

План:

  1. Знайомство та інтеграція Unity з Facebook SDK (читаєте зараз)
  2. Авторизація та шаринг новин в приват і на стіну

Дисклеймер. Як і решта статей мого авторства, ця публікація може містити неоптимальні реалізації, костилі, велосипеди та інші інженерні дива. Ви знаєте що робити — кидатись брудними шкарпетками, кислими помідорами та фіксами з порадами в коментарях ;)

Отож, viva Facebook!

Найпопулярніша соцмережа світу не потребує додаткової реклами та переліку причин, чому варто її імплементити та заохочувати гравців ділитися в ній своїми перемогами. Загалом, інтеграція Unity з Facebook може виконуватися двома способами:

  1. Використання Facebook Graph API
  2. Використання Facebook SDK for Unity

У першому випадку ви зможете на більш низькому рівні обмінюватися запитами з сервером FB. Такий підхід значно актуальніший при роботі з веб-додатками чи сайтами, проте, реалізувавши обмін з віддаленим сервером через REST-архітектуру та виконуючи парсинг відповідей, можна досягнути набагато глибшого контролю над взаємодією з фейсбуком, при цьому додаток буде трішки легшим (лише декілька класів для комунікації порівняно з цілою бібліотекою класів в SDK).

У другому ж випадку використовується «буферна» бібліотека, в якій вже реалізовано найбільш часто використовувані методи та сценарії роботи з соцмережею.

Ось приклад авторизації за допомогою SDK:

FB.LogInWithReadPermissions (
    new List<string>(){"public_profile", "email", "user_friends"},
    AuthCallback
);

Вам достатньо буде вказати список пермішенів (або дозволів, кому як більше подобається) та визначений раніше коллбек, який дозволить отримати та опрацювати відповідь після повернення логіки поведінки до вашого додатку. До речі, при роботі з SDK сама бібліотека шукає наявну апу фейсбуку, і якщо вона відсутня — дозволить виконати всі потрібні дії, переправивши вас на відповідну веб-сторінку.

Окрім того, якщо вже «всё очень плохо», існує чудовий метод FB.Api(), що дозволяє викликати всі описані методи в GraphApi через SDK.

Варто зауважити: щоб інтеграція Unity з Facebook пройшла успішно, не завадить відвідати офіційний сайт, адже команда Цукерберга полюбляє вносити зміни. Для початку загляньте сюди:

  1. Початкове налаштування
  2. Налаштування Android
  3. Налаштування iOS

Вйо до справи! Тепер, коли ми знаємо, як можна інтегрувати Unity з Facebook, пропоную інтегрувати цю соцмережу в свій проект. Для цього йдемо за посиланням, качаємо пакет та подвійним кліком імпортуємо в наш вже відкритий проект.

Вікно Importing package

Після цього в рядку меню побачимо новий пункт Facebook, де й буде все налаштовуватись. Заходимо в пункт Facebook/Edit Settings:

Вікно редагування налаштувань Facebook

Тепер ми можемо налаштувати наш додаток в інспекторі:

Вікно інспектора

Як бачимо, необхідно ввести назву та id додатку. Тому саме час створити його в фейсбуці за цим посиланням.

Створення нового ідентифікатора додатка

Вказавши назву нашої гри (я припустив, що ми робимо саме ігри), отримаємо редірект на його сторінку.

Hint. Варто зауважити, що фейсбук не дозволяє включати в назви слово «face». Чому не «facebook», а саме «face» — не знаю, проте це факт, тому обирайте назву обережно.

Впровадження SDK

Скопіювавши AppID в відповідне поле в едіторі та вказавши назву додатку, можна випробувати семпли, що йдуть разом з SDK, просто перетягнувши всі наявні сцени:

Перетягування сцен

Натиснувши Play (поточна сцена повинна бути Main menu), отримаємо:

Головне меню

Отут і можна спробувати всі можливості SDK.

Android

Це все круто, але для мобільних ОС потрібні додаткові налаштування. Для прикладу пропоную взяти Android OS.

Щоб створити збірку під Android, просто змініть цільову платформу. Це можна зробити в File/Build Settings…/Android/Player Settings…

Створення збірки під Android

Натиснувши Player Settings, зможемо редагувати налаштування збірки під обрану платформу. Тут ми маємо вказати Bundle Identifier (який побажає ваша уява), та мінімальний АРІ-рівень (Facebook SDK вимагає 15).

Повернувшись назад в Facebook/Edit Settings, побачимо, що всі наші зміни вже збережено:

Збережені зміни у налаштуваннях Facebook

Тепер залишилось повернутись на сторінку налаштування нашої гри в Facebook і ввести Package name, Class name та Debug name. Для цього переходимо на вкладку Settings, де додаємо платформу (якщо вона відсутня) і копіюємо дані з едітора у відповідні поля.

Сторінка налаштування гри в Facebook

Коли ми оберемо платформу Android, відповідна панель з потрібними нам полями з’явиться нижче:

Панель з полями Google Play Package Name і Key Hashes

Оце й усе. Ми це зробили — можна білдити :D

У цій статті ми дізналися, як інтегрувати Unity з Facebook SDK, а в наступній частині я розповім як логінитись, шарити новини та писати всілякі пакості друзям в приват за допомогою месенджера.

“So long and thanks for all the fish”

Частина 2. Інтеграція Unity з Facebook: авторизація та шаринг новин

Потрібен MVP, розробка під iOS, Android або прототип додатка? Ознайомтеся з нашим портфоліо і зробіть замовлення вже сьогодні!