1

そこで、Xamarin.Android http://azure.microsoft.com/en-us/documentation/articles/partner-xamarin-mobile-services-android-get-started-push/のこのプッシュ通知サンプルを実行してみました。ドキュメントから-起動して実行しました。アイテムの挿入は問題なく機能しますが、プッシュ通知は機能しません。

これは、プッシュのために Azure で発生するエラーです: エラー: 400 - 提供された通知ペイロードが無効です。

このサンプルを自分のデバイスで実行して、プッシュ通知を試した人はいますか? このエラーは、私の場合にはあまり役に立ちません。

サンプルは PushSharp を使用しています。

助けていただければ幸いです。本当にありがとう!

4

1 に答える 1

0

これは、バックエンド サーバーから Google Cloud Messaging にプッシュ通知を送信する方法です。

public async Task<bool> SendNotification(int id, int index, string from, string text, string tag)
{
    try
    {
        var payload = new
        {
            data = new
            {
                message = new
                {
                    // this part can be anything you want
                    id,
                    index,
                    from,
                    text,
                    when = DateTime.UtcNow.ToString("s") + "Z"
                }
            }
        };

        var json = JsonConvert.SerializeObject(payload);

        await _hubClient.SendGcmNativeNotificationAsync(json, tag);

        return true;
    }
    catch (ArgumentException ex)
    {
        // This is expected when an APNS registration doesn't exist.
        return false;
    }

次に、アプリのインテント サービスで、JSON の「メッセージ」を解析できます。

protected override void OnMessage(Context context, Intent intent)
{
    var message = intent.Extras.GetString("message");

    // message is JSON payload
    // { "id":"someid", "index":"1", "text":"some text","from"... }

    var json = JObject.Parse(message);
    var id = json["id"].ToString();
    var index = json["index"].ToString();
    var text = json["text"].ToString();
    var from = json["from"].ToString();
    var when = DateTime.Parse(json["when"].ToString());

    // do whatever you want with your values here

}
于 2014-07-22T16:43:02.323 に答える