Доброго времени суток.
Использую vk api sdk в Xamarin.Android. Создаю запрос вот таким образом:
var token = VKHelper.GetVkUserToken(App.Data.Setting.List);
var iparams = new Dictionary<string, Java.Lang.Object>();
iparams.Add(VKApiConst.UserId, VKBuffer.Friend.Id);
iparams.Add("type", "invite");
iparams.Add("access_token", token);
v = new VKRequest("apps.sendRequest", new VKParameters(iparams));
по нажатию на кнопку вызываю ExecuteWithListener:
v.ExecuteWithListener(new ReqvList(new Action(o =>
{
if (o.IsComplete)
{
try
{
showCustomAlert(Resource.Drawable.checkmark, GetString(Resource.String.SentInvite), Android.Graphics.Color.Argb(100, 0, 0, 200));
}
catch { }
}
else
{
try
{
showCustomAlert(Resource.Drawable.ic_post, GetString(Resource.String.NotSentInvite) + "\n" + GetString(o.MessageId), Android.Graphics.Color.Argb(100, 200, 0, 0));
}
catch { }
}
})));
В итоге: если нажму на кнопку пригласить пользователя в игру, то появится диалоговое окно "вконтакте" с предложением пригласить (там можно согласиться, можно отменить). Если нажму "пригласить" пользователя, который в настройках запретил приглашать себя в игры, то сработает нормально, это строки:
....
else
{
try
{
showCustomAlert(Resource.Drawable.ic_post, GetString(Resource.String.NotSentInvite) + "\n" + GetString(o.MessageId), Android.Graphics.Color.Argb(100, 200, 0, 0));
}
catch { }
}
....
Но если же пользователь "разрешает" приглашать его, то "лисенер" не срабатывает и приложение зависает. В приложении можно нажать кнопку "назад", приложение "отвиснет" и, если снова приглашу, то уже все сработает. т.е. срабатывает лисенер в случае статуса complete только со второго раза, это строки
...
if (o.IsComplete)
{
try
{
showCustomAlert(Resource.Drawable.checkmark, GetString(Resource.String.SentInvite), Android.Graphics.Color.Argb(100, 0, 0, 200));
}
catch { }
}
...
Везде написано, что нужно делать именно так, но данное решение не работает.