为了了解BlackBerry中Push服务的实现方式,我安装了Push Service SDK并遵循Push_Service_SDK-Getting_Started_Guide。完全按照步骤操作,从应用程序“注册”自己,我得到以下错误:
Request to register failed. Caused by java.io.IOException: Network operation [Subscribe] failed. Make sure that Content Provider URL is accesible.
任何人都可以指导我完成这件事。在输入详细信息时,我们需要提供“BPS服务器URL”和“Push Initiator应用程序URL”。我收到了BlackBerry的凭证详细信息,其中包含PPG Base Url作为“cpXXX.pushapi.eval.blackberry.com”,其中XX需要由CPID(内容提供商ID)替换。此链接是否为“BPS服务器URL”和“推送发起程序应用程序URL”键入?我确实键入了这个并在“注册”上收到了上述错误。
请指导。
答案 0 :(得分:2)
您应该已收到包含服务器应用和黑莓客户端应用凭据的邮件。对于客户端应用程序,它们应如下所示:
Application ID: <CPID(4 chars)>-<id(35 chars)>
PPG Base URL: http://cpXXX.pushapi.eval.blackberry.com
Push Port: <port(5 chars)>
如您所见,App id有两个部分。短划线前面的前缀是您的CPID,其余是id。然后我们有一个URL,我们需要用CPID替换XXX(注意CPID通常是一个4位数字,所以如果他们使用XXXX作为占位符会更好)。最后是最多5位数的端口号。
使用这些参数,在您的BB应用程序中,您可以编写如下代码:
String id = "<your full app id here>";
String url = "http://cp<CPID>.pushapi.eval.blackberry.com"; //Make sure it is http and not https, and check you have replaced <CPID> with the appid prefix.
int port = <port>;
byte serverType = <PushApplicationDescriptor.SERVER_TYPE_BPAS or
PushApplicationDescriptor.SERVER_TYPE_NONE>;
ApplicationDescriptor descriptor = ApplicationDescriptor.currentApplicationDescriptor();
PushApplicationDescriptor pushDescriptor = new PushApplicationDescriptor(id, port, url, serverType, descriptor);
// This is how we would register the client app:
PushApplicationRegistry.registerApplication(pushDescriptor);
执行该行后,如果一切正常(注册需要一些时间,建立几个连接),您可以检查注册状态调用PushApplicationRegistry.getStatus
或通过onStatusChange
回调。