Дескриптор Facebook AppRequest в игре unity3d

Я пытаюсь сделать игру в Unity3D с новым SDK для Facebook Unity. Я могу отправить AppRequest друзьям из моего списка. Но я сомневаюсь, что после того, как мои друзья загрузили ту же игру, как я могу общаться с друзьями с помощью AppRequest.

Например. Если я отправляю «Жизнь» другу, мой друг должен увидеть в своей игре «Жизнь», отправленную от меня. его счетчик «Жизнь» должен увеличиться на 1 (жизнь++). То же самое можно сделать и с «Боеприпасами».

  1. Отправитель: Как отличить «Запрос жизни» от «Запрос боеприпасов».
  2. Приемник: Как в игре получить этот запрос и дифференцировать его, чтобы счетчики «Жизнь» или «Боеприпасы» увеличивались.

person Nick    schedule 06.09.2013    source источник


Ответы (1)


У вас есть два варианта:

  • когда создается запрос приложения, вы всегда получаете уникальный идентификатор, который вы можете использовать для привязки к типу через систему отслеживания данных (например, Parse)
  • когда вы вызываете FB.AppRequest, вы можете передать строку в качестве параметра «данные», который впоследствии будет возвращен вам при получении запросов приложения пользователя. (например, FB.API("/me/apprequests", YourCb);)

Еще одна вещь, на которую следует обратить внимание, — это если игрок приходит в вашу игру через запрос приложения, на который вы можете ответить или уведомить его. Например, на Canvas: – Бобби МакГи посещает https://apps.facebook.com/friendsmashunity, отправляет мне запрос через FB.AppRequest. возвращаемое значение этого вызова будет примерно таким:

{ "запрос": "467375710036144", "кому": [ "my_user_id" ] }

Затем я вижу такое уведомление: запросить уведомление

Когда я нажимаю на эту ссылку, открывается ваша игра со следующими параметрами (вы можете видеть, что request_ids — один из них) — https://apps.facebook.com/friendsmashunity/?fb_source=notification&request_ids=467375710036144&ref=notif&app_request_type=user_to_user¬if_t=app_request

Вы можете получить «данные» из приложения, вызвав FB.API:

  • вызов FB.AppRequest(...,data="life") => идентификатор запроса = 1234
  • позже игрок посещает вашу игру с идентификатором запроса 1234
  • вы вызываете FB.API("/1234") : результирующая строка JSON будет иметь поле data="life"

Надеюсь, это поможет, и спасибо, что попробовали SDK!

person aaron    schedule 07.09.2013
comment
Привет @aaron Большое спасибо за ответ. Я понял, что ты пытаешься сказать. Всего одно сомнение. На устройстве (Android или iOS), всякий раз, когда получен запрос, как отследить, что я получил запрос, чтобы я мог вызвать FB.API(/1234) и проанализировать Json на приемнике. - person Nick; 07.09.2013
comment
Например. в игре TopEleven всякий раз, когда мы отправляем какой-либо пакет другу, всем получателям не нужно посещать Facebook на устройстве. Он просто получает номер уведомления в меню игры. Должен ли я продолжать проверять запрос с помощью FB.API()? Если нет, то когда вызывать FB.API()? Как получатель получит request_id в игре? - person Nick; 07.09.2013
comment
У Android также есть uri, вызовите getActivity().getIntent().getData(), и он вернет Uri. затем вы можете сказать намерениеUri.getQueryParameter(request_ids); чтобы получить идентификаторы запроса, если он был запущен таким образом. (мы не поддерживаем это напрямую в FB Unity SDK. Я не думаю, что это распространенный вариант использования, и я хотел, чтобы все было просто) - person aaron; 07.09.2013
comment
Что касается вашего второго вопроса: боюсь, у нас нет подписок на запросы приложений. но поскольку они должны исходить из вашей собственной игры, у вас есть возможность реализовать свой собственный push-подход, если у вас есть серверная часть, настроенная для этого (например, Parse позволяет вам реализовать функцию afterSave, если это то, что вы ищете). - person aaron; 07.09.2013
comment
Так что мне придется использовать JNI, чтобы добавить эту дополнительную функциональность.. Я думаю..?? :( - person Nick; 07.09.2013
comment
Боюсь, что да, извините за ваше разочарование. Моя самая большая цель для Unity SDK — простота, и получение всех запросов и отображение их пользователю в специфическом для игры виде, похоже, является подходом, принятым большинством разработчиков. Тем не менее, вы не первый, кто просит об этом, поэтому я готов добавить это. Тем временем на вашем C# может работать нечто подобное: AndroidJavaClass jc = new AndroidJavaClass(com.unity3d.player.UnityPlayer); AndroidJavaObject jo = jc.GetStatic(currentActivity); jo.Call(getData,...); Надеюсь, не слишком сложно, и еще раз извините за разочарование. - person aaron; 07.09.2013
comment
Это нормально. Как вы предложили использовать JNI. Мне нужно будет создать новый класс Java и импортировать в него facebook SDK. Затем используйте getActivity().getIntent().getData() следующим образом: /a> в getData(). и вызовите его через AndroidJavaObject. Верно? Надеюсь, он будет добавлен в ближайшее время. Не могу дождаться, чтобы добавить этот потрясающий SDK в мою игру. - person Nick; 07.09.2013
comment
эта ссылка верна для получения запросов. Удачи, не терпится попробовать вашу игру. - person aaron; 08.09.2013
comment
на следующей неделе мы выпустим новый SDK, чтобы показать вызывающий URI. должно быть до среды: 4.3.3 - person aaron; 14.10.2013