Существует несколько проверенных мной способов отправить результаты игры (и не только), написанной на Unity3d. Как всем известно, публиковать на Facebook и Twitter сообщения можно двумя способами: открыв сайт сервиса в браузере либо открыв клиентскую программу, вбить туда сообщение и отправить сообщение (хотя есть еще способ - отправить с помощью смс, однако, для игры с подключенным сервисом OpenFeint, которому требуется интернет-соединение, этот способ можно отключить, поскольку смс не так удобно, как написать сообщение в клиенте или браузере).
text - текст твита (напомню, не более 140 символов), url - адрес прикрепляемой ссылки, related - аккаунты, на которые будет предложено подписаться после отправки твита, если пользователь не подписан на них и lang - язык твита.
Замечу, что изучал я эту тему только на Android, но и на iOS должно найтись что-то подобное.
Следующий код на чистой яве, которая используется при написании приложений при работе напрямую с Android SDK:
После выполнения данной функции будет открыто окно выбора программы, через которую можно отправить сообщение. Выглядит примерно так:
По поводу того, как использовать это в проекте Unity3d - есть такой класс как Android JNI. Он позволяет выполнять функции Android SDK из Unity3d. Думаю, можно успешно его использовать для открытия этого диалога на Android-устройстве. Я не использовал этот подход в своем проекте потому, что наткнувшись вот на эту публикацию и поняв, что ответа дать не могут (да и, к тому же, решение не кроссплатформенное), я приостановил свои изыскания и выбрал вариант с браузерами. Однако данная тема интересна мне и все-таки хотелось бы ее освоить.
На этом останавливаю свой поток сознания, спасибо всем за внимание, надеюсь хоть что-то пригодится ;)
Публикация результата игры на Facebook и Twitter с помощью браузера
Начнем с того, что в Unity3d есть замечательная функция, которая открывает нужную нам страничку в браузере. Конечно же, никто не запрещает передать параметры в строке запроса. Вот она:
Application.OpenURL(string url);
Она открывает заданный URL в браузере мобильного устройства.Facebook и Unity3d
- создаем приложение фейсбук, с помощью которого будем публиковать сообщения на стенах игроков (конечно же, по их воле ;) ). Заходим на страницу создания приложения Facebook и добавляем свое приложение, через которое будем публиковать. Назвать можно как угодно, главное, чтоб оно не пугало пользователей. Я назвал по имени нашей компании "Lopatatech Sharer", хотя можно было по имени игры, к примеру. Можно добавить логотип приложению и другие феньки, чтоб солиднее смотрелось, но не будем вдаваться в оффтопик, тему приложений в соцсетях разовьем позже. Здесь нам нужен App ID
Далее создаем модуль для Unity3d. Для моего функционала достаточно одного класса с одной функцией, которая выглядит вот так:
const string AppId = "17657657657850"; const string ShareUrl = "http://www.facebook.com/dialog/feed"; public static void Share(string link, string pictureLink, string name, string caption, string description, string redirectUri) { Application.OpenURL(ShareUrl + ?app_id=" + AppId + "&link=" + WWW.EscapeURL( link )+ "&picture=" + WWW.EscapeURL(pictureLink) + "&name=" + WWW.EscapeURL(name) + "&caption=" + WWW.EscapeURL(caption) + "&description=" + WWW.EscapeURL(description) + "&redirect_uri=" + WWW.EscapeURL(redirectUri)); }
AppId - тот самый идентификатор приложения, которое мы создали выше, link - ссылка, которая появится в сообщении на стене пользователя, picture - ссылка на изображение, которое будет прикреплено к сообщению, name - имя сообщения, caption - его заголовок, description - описание, redirect_uri - адрес того места, куда будет переадресован пользователь после публикации сообщения.
Сразу замечу вот что: ввиду жуткого качества документации социальной сети Facebook, там не указано, что ссылка picture обязательная, как и redirect_uri (чтоб сильно не мучаться, в качестве этого адреса указываю сам Facebook).
Это все выглядит вот так:
Twitter и Unity3d
С Twitter все проще: здесь достаточно знать нужный URL и параметры публикации:
const string Address = "http://twitter.com/intent/tweet";
public static void Share(string text, string url,
string related, string lang="en")
{
Application.OpenURL(Address +
"?text=" + WWW.EscapeURL(text) +
"&url=" + WWW.EscapeURL(url) +
"&related=" + WWW.EscapeURL(related) +
"&lang=" + WWW.EscapeURL(lang));
}
text - текст твита (напомню, не более 140 символов), url - адрес прикрепляемой ссылки, related - аккаунты, на которые будет предложено подписаться после отправки твита, если пользователь не подписан на них и lang - язык твита.
Публикация результата игры на Facebook и Twitter с помощью клиентской программы
Конечно, этот подход не подходит напрямую для Unity3d, однако тоже может подойти для отправки результатов игры в социальные сети. Причем пользователь может выбрать сам в какую социальную сеть он желает отправить сообщение с результатом. Здесь речь идет не только о Twitter и Facebook, но и о любой другой сети, клиент которой установлен на устройстве пользователя.Замечу, что изучал я эту тему только на Android, но и на iOS должно найтись что-то подобное.
Следующий код на чистой яве, которая используется при написании приложений при работе напрямую с Android SDK:
public void share(String subject,String text)
{
final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, text);
startActivity(Intent.createChooser(intent, getString(R.string.share)));
}
После выполнения данной функции будет открыто окно выбора программы, через которую можно отправить сообщение. Выглядит примерно так:
По поводу того, как использовать это в проекте Unity3d - есть такой класс как Android JNI. Он позволяет выполнять функции Android SDK из Unity3d. Думаю, можно успешно его использовать для открытия этого диалога на Android-устройстве. Я не использовал этот подход в своем проекте потому, что наткнувшись вот на эту публикацию и поняв, что ответа дать не могут (да и, к тому же, решение не кроссплатформенное), я приостановил свои изыскания и выбрал вариант с браузерами. Однако данная тема интересна мне и все-таки хотелось бы ее освоить.
На этом останавливаю свой поток сознания, спасибо всем за внимание, надеюсь хоть что-то пригодится ;)
спасибо!
ОтветитьУдалитьВсегда рад помочь :)
УдалитьА для вконтакте есть такое же?
ОтветитьУдалитьВозможно, не искал подобное для него
УдалитьОчень нужная инфа, спасибо !
ОтветитьУдалитьError Message: Requires valid redirect URI
ОтветитьУдалитьВыдает независимо от того что пишу в редиректе. Что делать?
Вполне возможно, что Redirect URI должен вести на домен приложения (если такой параметр есть). Точнее подсказать не могу, надо экспериментировать
Удалить