java - Android 通过.net webservices 发送推送通知

标签 java web-services google-cloud-messaging android-ksoap2 android-webservice

我正在使用以下网络服务从 Android 发送推送通知。当我第一次调用此 web 服务时,它花费了很多时间,并且推送通知未在 Android 设备上传递。它仅在从 Android 调用时发生。它作为网络服务完美运行。

[WebMethod]

    public string SendGcm(String serviceKey,String registrationId ,string message) {
        WebClient wc=new WebClient();
        wc.Headers.Add("Authorization", "key=" + serviceKey);
        NameValueCollection nameValues=new NameValueCollection
            {
                {"registration_id", registrationId},
                {"collapse_key", Guid.NewGuid().ToString()},
                {"data.payload", message}
            };

        var resp=wc.UploadValues("https://android.googleapis.com/gcm/send",
                    nameValues);

        var respMessage = Encoding.Default.GetString(resp);
                return respMessage;
    }

最佳答案

使用这个 - :

 public void MakeNotificationForAndroid(string DeviceToken, string Body, string Sound, string CustomFrom, string CustomeMsg)
        {
            String DeviceID = "";

            DeviceID = DeviceToken;
            WebRequest tRequest;
            tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
            tRequest.Method = "post";
            tRequest.ContentType = "application/x-www-form-urlencoded";
            tRequest.Headers.Add(string.Format("Authorization: key={0}", "AIzaSyBX1gD47uiVp0W_UjNxhwtVsQCNJYfg5vI"));

            String collaspeKey = Guid.NewGuid().ToString("n");
            //String postData=string.Format("registration_id={0}&data.payload={1}&collapse_key={2}", DeviceID, "Pickup Message", collaspeKey);
            String postData = string.Format("registration_id={0}&data.message={1}&collapse_key={2}&data.sound={3}&data.type={4}", DeviceID, Body, collaspeKey, Sound, CustomeMsg);

            Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            tRequest.ContentLength = byteArray.Length;

            Stream dataStream = tRequest.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            WebResponse tResponse = tRequest.GetResponse();

            dataStream = tResponse.GetResponseStream();

            StreamReader tReader = new StreamReader(dataStream);

            String sResponseFromServer = tReader.ReadToEnd();

            tReader.Close();
            dataStream.Close();
            tResponse.Close();
        }

关于java - Android 通过.net webservices 发送推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604652/

相关文章:

android - 移动后端启动器连续查询永不返回

java - 发布到 GoogleCloudMessaging 返回 400 InvalidTokenFormat

java - JAXB/MOXy : How to un-/marshall a field containing a scalar or list of scalars

java - 无法发送邮件 - javax.mail.NoSuchProviderException : smtp

c# - WCF 在服务实现的契约(Contract)列表中找不到契约(Contract)名称 'IMetadataExchange'

python - 如何在 web.py 中解码来自 github 的 POST 数据?

IOS:通知只显示交叉按钮不显示类别使用 GCM

java - log4j 到 log4j2 自定义 RollingPolicy

java - postgresql中如何表示小数字?

php - 如何使用file_get_content获取图像数据