public void DidCancel(GameRequestDialog gameRequestDialog)
        {
            var fbArgs = new FBEventArgs <Dictionary <string, object> >(null, FacebookActionStatus.Canceled, "User cancelled facebook operation");

            OnGameRequest(this, fbArgs);
            _gameRequestTcs?.TrySetResult(new FacebookResponse <Dictionary <string, object> >(fbArgs));
        }
        public void DidFail(GameRequestDialog gameRequestDialog, NSError error)
        {
            var fbArgs = new FBEventArgs <Dictionary <string, object> >(null, FacebookActionStatus.Error, $"Facebook Game Request Failed - {error.Code} - {error.Description}");

            OnGameRequest(this, fbArgs);
            _gameRequestTcs?.TrySetResult(new FacebookResponse <Dictionary <string, object> >(fbArgs));
        }
        public void DidComplete(GameRequestDialog gameRequestDialog, NSDictionary results)
        {
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            foreach (var r in results)
            {
                parameters.Add($"{r.Key}", $"{r.Value}");
            }
            var fbArgs = new FBEventArgs <Dictionary <string, object> >(parameters, FacebookActionStatus.Completed);

            OnGameRequest(this, fbArgs);
            _gameRequestTcs?.TrySetResult(new FacebookResponse <Dictionary <string, object> >(fbArgs));
        }
        void RequestGame(Dictionary <string, object> paramsDictionary)
        {
            if (paramsDictionary.TryGetValue("content", out object request) && request is FacebookGameRequestContent)
            {
                GameRequestContent.Builder gRequestContent = new GameRequestContent.Builder();
                var gameRequestContent = request as FacebookGameRequestContent;

                if (!string.IsNullOrEmpty(gameRequestContent.ObjectId))
                {
                    gRequestContent.SetObjectId(gameRequestContent.ObjectId);
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Title))
                {
                    gRequestContent.SetTitle(gameRequestContent.Title);
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Message))
                {
                    gRequestContent.SetMessage(gameRequestContent.Message);
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Data))
                {
                    gRequestContent.SetData(gameRequestContent.Data);
                }

                if (gameRequestContent.Recipients != null && gameRequestContent.Recipients.Length > 0)
                {
                    gRequestContent.SetRecipients(gameRequestContent.Recipients);
                }

                if (gameRequestContent.RecipientSuggestions != null && gameRequestContent.RecipientSuggestions.Length > 0)
                {
                    gRequestContent.SetSuggestions(gameRequestContent.RecipientSuggestions);
                }

                switch (gameRequestContent.ActionType)
                {
                case FacebookGameRequestActionType.None:

                    break;

                case FacebookGameRequestActionType.Send:
                    gRequestContent.SetActionType(GameRequestContent.ActionType.Send);
                    break;

                case FacebookGameRequestActionType.AskFor:
                    gRequestContent.SetActionType(GameRequestContent.ActionType.Askfor);
                    break;

                case FacebookGameRequestActionType.Turn:
                    gRequestContent.SetActionType(GameRequestContent.ActionType.Turn);
                    break;
                }


                switch (gameRequestContent.Filters)
                {
                case FacebookGameRequestFilter.None:

                    break;

                case FacebookGameRequestFilter.AppUsers:
                    gRequestContent.SetFilters(GameRequestContent.Filters.AppUsers);
                    break;

                case FacebookGameRequestFilter.AppNonUsers:
                    gRequestContent.SetFilters(GameRequestContent.Filters.AppNonUsers);
                    break;
                }

                GameRequestDialog dialog = new GameRequestDialog(CurrentActivity);
                dialog.RegisterCallback(mCallbackManager, gameRequestCallback);
                dialog.Show(gRequestContent.Build());
            }
        }
        void RequestGame(Dictionary <string, object> paramsDictionary)
        {
            if (paramsDictionary.TryGetValue("content", out object request) && request is FacebookGameRequestContent)
            {
                GameRequestContent gRequestContent = new GameRequestContent();
                var gameRequestContent             = request as FacebookGameRequestContent;

                if (!string.IsNullOrEmpty(gameRequestContent.ObjectId))
                {
                    gRequestContent.ObjectId = gameRequestContent.ObjectId;
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Title))
                {
                    gRequestContent.Title = gameRequestContent.Title;
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Message))
                {
                    gRequestContent.Message = gameRequestContent.Message;
                }

                if (!string.IsNullOrEmpty(gameRequestContent.Data))
                {
                    gRequestContent.Data = gameRequestContent.Data;
                }

                if (gameRequestContent.Recipients != null && gameRequestContent.Recipients.Length > 0)
                {
                    gRequestContent.Recipients = gameRequestContent.Recipients;
                }

                if (gameRequestContent.RecipientSuggestions != null && gameRequestContent.RecipientSuggestions.Length > 0)
                {
                    gRequestContent.RecipientSuggestions = gameRequestContent.RecipientSuggestions;
                }

                switch (gameRequestContent.ActionType)
                {
                case FacebookGameRequestActionType.None:
                    gRequestContent.ActionType = GameRequestActionType.None;
                    break;

                case FacebookGameRequestActionType.Send:
                    gRequestContent.ActionType = GameRequestActionType.Send;
                    break;

                case FacebookGameRequestActionType.AskFor:
                    gRequestContent.ActionType = GameRequestActionType.AskFor;
                    break;

                case FacebookGameRequestActionType.Turn:
                    gRequestContent.ActionType = GameRequestActionType.Turn;
                    break;
                }


                switch (gameRequestContent.Filters)
                {
                case FacebookGameRequestFilter.None:
                    gRequestContent.Filters = GameRequestFilter.None;
                    break;

                case FacebookGameRequestFilter.AppUsers:
                    gRequestContent.Filters = GameRequestFilter.AppUsers;
                    break;

                case FacebookGameRequestFilter.AppNonUsers:
                    gRequestContent.Filters = GameRequestFilter.AppNonUsers;
                    break;
                }
                GameRequestDialog.Show(gRequestContent, this);
            }
        }