如何在Xamarin Android中使用Google Cloud Messaging (GCM)

本文关键字:Cloud Google Messaging GCM Xamarin Android | 更新日期: 2023-09-27 18:10:19

我一直在阅读这个教程关于Xamarin Android推送通知使用GCM,我已经创建了client APKasp.NET服务器,但有一些我不能在这里的ASP项目中使用:

public string SendNotification(string deviceId, string message)....
var GoogleAppID = "123456789ABCDEFGHIJKLMNOP";
var SENDER_ID = "123456789";
var value = message;
var webRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
webRequest.Method = "post";
webRequest.ContentType = " application/x-www-form-urlencoded;charset=UTF-8";
webRequest.Headers.Add(string.Format("Authorization: key={0}", GoogleAppID));
webRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
var postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message="
    + value + "&registration_id=" + deviceId + "";

我有SENDER_IDGoogleAppID,但deviceId是什么?教程没有提到如何获得这个属性,有人知道如何获得这个属性吗?谢谢!

如何在Xamarin Android中使用Google Cloud Messaging (GCM)

如果您查看这里的教程源代码,它在客户端中有一个创建deviceId的OnRegistered方法。

protected override void OnRegistered (Context context, string registrationId)
    {
        Console.WriteLine ("Device Id:" + registrationId);
        var preferences = GetSharedPreferences("AppData", FileCreationMode.Private);
        var deviceId = preferences.GetString("DeviceId","");
        if (string.IsNullOrEmpty (deviceId)) {
            var editor = preferences.Edit ();
            editor.PutString ("DeviceId", registrationId);
            editor.Commit ();
        }
    }

同样来自教程:

设备注册成功后,您将获得OnRegistered事件中的注册id。

他们已经实现了这样的方法:

protected override void OnRegistered (Context context, string registrationId)
{
    Console.WriteLine ("Device Id:" + registrationId);
}

与来源不同,可能会引起混淆。我会浏览源代码,看看您的实现中是否缺少任何其他位。