Android 黑莓安卓推送消息服务器

Android 黑莓安卓推送消息服务器,android,push-notification,blackberry-10,blackberry-android,Android,Push Notification,Blackberry 10,Blackberry Android,我在尝试为我的Z10推送通知时遇到问题。设备成功注册推送通知,我收到BlackBerry生成的注册ID,如中所述 但我在尝试向该服务器发送通知时遇到问题 对于普通的安卓系统,我使用的是一个。 我必须修改它,以便将消息发送到BlackBerry服务器,即XXX是我的CPID(内容提供商ID) 问题是,我收到了404作为回报,但不知道是什么原因造成的。。。有什么想法吗?相同的消息被成功发送到常规Android设备 或者,是否有人成功地向您的设备发送推送消息?如果是,您能否分享请求的外观?对于您的请求

我在尝试为我的Z10推送通知时遇到问题。设备成功注册推送通知,我收到BlackBerry生成的注册ID,如中所述

但我在尝试向该服务器发送通知时遇到问题

对于普通的安卓系统,我使用的是一个。 我必须修改它,以便将消息发送到BlackBerry服务器,即XXX是我的CPID(内容提供商ID)

问题是,我收到了404作为回报,但不知道是什么原因造成的。。。有什么想法吗?相同的消息被成功发送到常规Android设备


或者,是否有人成功地向您的设备发送推送消息?如果是,您能否分享请求的外观?

对于您的请求,您添加了许多内容:

  • 您必须创建对此URL的请求
    https://android.googleapis.com/gcm/send
  • 您必须将服务器API密钥添加到请求的头中
  • 此外,您还必须添加到请求发送者ID的头中,该ID是由Google API控制台提供给您的2和3
  • 最后,这是我用来为我的5000或更多用户推送通知的代码:
  • 注意:它是由ASP.Net和VB.Net开发的,但必须应用相同的原则:

    Dim request As WebRequest = WebRequest.Create("https://android.googleapis.com/gcm/send")
    request.Method = "POST"
    request.ContentType = "application/json"
    request.Headers.Add("Authorization: key=AIzaSyA47-XMaePL1mmI0P1yQ9V4sntMVn9q-1o")
    request.Headers.Add("Sender: id=648406549877")
    Dim collapsKey = Guid.NewGuid.ToString("n")
    Dim postdata As String = "{""registration_ids"":" + ids(j) + ",""data"":{""message"":""" + TextBox1.Text + """,}" + ",""collapse_key"":""" + collapsKey + """,}"
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postdata)
    request.ContentLength = byteArray.Length
    Dim dataStream As Stream = request.GetRequestStream
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()
    Dim resposne As WebResponse = request.GetResponse
    Dim dataresponse As Stream = resposne.GetResponseStream
    Dim reader As New StreamReader(dataresponse)
    Dim sResponseFromServer As String = reader.ReadToEnd
    reader.Close()
    

    最后,我能够提出推送请求。你必须把它推到黑莓服务器上。我使用了BBSDK。您必须使用的URL应如下所示:

    https://cpXXX.pushapi.eval.blackberry.com/mss/PD_pushRequest
    
    示例代码:

    IdGenerator idGenerator = new IdGeneratorImpl();
    
            List<String> addresses = new ArrayList<String>();
    
            JSONObject message = new JSONObject();
            //populate message with key-value pairs
            String data = message.toString();
            //populate addresses with device PINs
    
            PushMessageControl pushMessageControl = new PushMessageControl(PPGType.PUBLIC_PUSH, idGenerator, "[ YOUR BlackBerryAppId]", addresses);
    
            Content content = new TextContent(data, "UTF-8");
    
            PapService papService = new PapServiceImpl();
    
            PushSDKProperties properties = new PushSDKPropertiesImpl();
            properties.setPublicPpgAddress("[YOUR BLACKBERRY PPG ADDRESS]");
            properties.setParserSpecialCharacters(BLACKBERRY_PARSER_SPECIAL_CHARACTERS);
            properties.setHttpIsPersistent(false);
            properties.setHttpConnectionTimeout(BLACKBERRY_CONNECTION_TIMEOUT);
            properties.setDtdDeclarationPublic(BLACKBERRY_DTD_DECLARATION_PUBLIC);
            properties.setHttpReadTimeout(BLACKBERRY_READ_TIMEOUT);
    
            HttpClientImpl client = new HttpClientImpl();
            client.setPushSDKProperties(properties);
            papService.setHttpClient(client);
            papService.setPushSDKProperties(properties);
    
            PushResponse response = papService.push("[ YOUR BlackBerryAppId]", "[ YOUR BlackBerryPassword]", "[ YOUR BlackBerryAppId]", pushMessageControl, content);
    
    IDGeneratorIDGenerator=newIDGeneratorImpl();
    列表地址=新的ArrayList();
    JSONObject消息=新的JSONObject();
    //用键值对填充消息
    字符串数据=message.toString();
    //用设备引脚填充地址
    PushMessageControl PushMessageControl=新的PushMessageControl(PPGType.PUBLIC_PUSH,idGenerator,“[YOUR BlackBerryAppId]”,地址);
    内容=新的文本内容(数据,“UTF-8”);
    PapService PapService=新的PapServiceImpl();
    PushSDKProperties属性=新的PushSDKPropertiesImpl();
    setPublicPpgAddress(“[您的黑莓PPG地址]”);
    setParserSpecialCharacters(BLACKBERRY_解析器_特殊_字符);
    属性。setHttpIsPersistent(false);
    setHttpConnectionTimeout(BLACKBERRY\u连接\u超时);
    属性。setDtdDeclarationPublic(BLACKBERRY\u DTD\u声明\u PUBLIC);
    setHttpReadTimeout(黑莓读取超时);
    HttpClientImpl客户端=新的HttpClientImpl();
    client.setPushSDKProperties(属性);
    papService.setHttpClient(客户端);
    papService.setPushSDKProperties(属性);
    PushResponse=papService.push(“[YOUR BlackBerryAppId],[YOUR BlackBerryPassword],[YOUR BlackBerryAppId],[YOUR BlackBerryAppId],[pushMessageControl,content”);
    
    在哪里

    private static final int BLACKBERRY\u READ\u TIMEOUT=120000;
    私有静态最终连接超时=60000;
    
    private static final char[]BLACKBERRY_PARSER_SPECIAL_CHARACTERS=new char[]{'&',“,':',”谢谢您的评论,但我认为您描述的是向Android设备发送推送通知的工作原理,而GCMs Java服务器库的工作原理完全相同。我的问题是如何为BLACKBERRY设备执行此操作(您可以在其上部署APK文件)
    private static final int BLACKBERRY_READ_TIMEOUT = 120000;
    
    private static final int BLACKBERRY_CONNECTION_TIMEOUT = 60000;
    
    private static final char[] BLACKBERRY_PARSER_SPECIAL_CHARACTERS = new char[] {'&', '"', ':', '<'};
    
    private static final String BLACKBERRY_DTD_DECLARATION_PUBLIC = "<!DOCTYPE pap PUBLIC \"-//WAPFORUM//DTD PAP 2.1//EN\" \"http://www.openmobilealliance.org/tech/DTD/pap_2.1.dtd\">";