【问题标题】:How to use Google Cloud Messaging (GCM) in Xamarin Android如何在 Xamarin Android 中使用 Google Cloud Messaging (GCM)
【发布时间】:2015-08-27 21:24:05
【问题描述】:

我一直在阅读this 关于使用 GCM 的 Xamarin Android 推送通知的教程,我已经创建了 client APK 和 asp.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_ID 和GoogleAppID,但deviceId 是什么?教程没有提到如何获取这个属性,有谁知道如何获取这个属性!谢谢!

【问题讨论】:

    标签: c# android xamarin google-cloud-messaging


    【解决方案1】:

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

    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);
    }
    

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

    【讨论】:

    • 抱歉,我不确定如何获取 ID,但在我的实现中,我只有两个类:GcmService.cs 和 GcmBroadcastReceiver.cs,但这个推送通知只能在我的手机中使用?我的意思是我不能在不同的手机上使用同一个应用程序,并且从我的服务器发送消息并且每个人都收到?
    • 你看的教程一次发送一个,它的结尾是“现在你可以运行Android应用程序,从输出窗口获取注册ID。运行ASP.Net应用程序,提供注册ID和消息。单击发送通知。如果一切顺利,您会在模拟器中看到一条通知。如果您想向所有已注册的设备发送通知,则必须存储您的registrationIds(又名deviceIds)并遍历它们,从文档中您可以分批发送1000 个deviceIds 的通知。 GCM 中没有发送到“所有设备”选项。
    • 谢谢大家!真的帮帮我!
    • 对于“发送到所有设备”,请检查此链接中的代码tejaprakash.com/2013/05/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2013-03-12
    • 2015-11-26
    • 2014-02-11
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多