通过BES/BIS、BlackBerry推送通知
我正在尝试使用OS<7.X的推送通知 我下载了示例服务器/客户机代码。我在我的设备上部署了客户端代码,在提供的tomcat上部署了低级示例代码 作为记录,当我在这里注册推送通知时,我使用BIS选项注册。现在我得到了一个黑莓手机,我被告知它正在使用BES(我不认为这是我将要描述的问题的根源…) 在这个设备上,我在示例应用程序中输入了我收到的电子邮件中给出的所有正确设置 运行tomcat服务器的pc和手机都连接到同一个wifi 我正在尝试从设备浏览器连接到服务器,例如通过BES/BIS、BlackBerry推送通知,blackberry,push-notification,Blackberry,Push Notification,我正在尝试使用OS
https://196.84.32.112:8443/low-水平样品
浏览器会正常打开页面,这意味着我可以通过手机连接到服务器
现在,当我从设备示例应用程序中点击register(我在设置中尝试了BIS/BES两个选项)时,总是会出现以下错误:
注册请求失败。java.io.IOException原因:网络操作[Subscribe]失败。确保内容提供商URL可访问。
在日志中,我得到:
打开URL:我的服务器URL附加了用户名/密码/型号/连接类型等信息
内容提供商网络命令[Subscribe]失败,原因是无法连接到196.84.32.112:8443
命令“register”失败,错误为:java.io.IOException:网络操作[Subscribe]失败。确保内容提供商URL可访问。
一个想法是,我应该再次注册新的按键,并使用BIS/BES选项,而不仅仅是BIS,但这里的问题似乎是与本地服务器没有连接,而不是RIM服务器。我已经尝试注册了,我正在等待新设置的邮件
此外,我对BIS/BES选项有点困惑。我不知道我的用户是否会启用BIS或BES,那么我应该在代码中添加什么?!在示例应用程序中,它要求我在BIS或BES之间进行选择,但当应用程序即将投入生产时,我需要以编程方式进行选择,我将选择什么?!或者此选择仅用于应用程序的评估/开发,并且在生产过程中有另一台服务器?首先让我解释BB推送演示的注册流程: 当您单击Register时,设备将
ContentProviderProtocol.performCommand()方法中
BpasProtocol.register()方法中
ContentProviderProtocol.performCommand()
return而不做任何操作,从应用程序中注释掉步骤1
PS:步骤1中使用的webapp不必与推送启动器相同。webapp只是用来跟踪所有注册接收推送的用户,如果你希望有很多用户,那么最好将其放置在分布式体系结构的云中。我认为这里说的都是对的,但我希望我们能够整合一些答案,并总结这个问题 您没有共享您的代码,这使事情变得更加困难,但许多人使用RIM/BlackBerry提供的PushDemo源代码,其中连接后缀在
/PushDemo/com/RIM/samples/device/push/PushUtils.java
中硬编码:
private静态字符串getConnectionSuffix(){
返回“deviceside=false;ConnectionType=mds public”;
}
我也从阅读中猜到了这一点
通过这样做,您已经硬编码了黑莓传输类型的围嘴,比如BES、BIS、BIBS或WAP。BIBS传输将请求从您的设备发送到黑莓的服务器,这些服务器位于互联网上。(注意:这一部分可能会让iOS/Android开发者感到困惑,因为这些平台不提供Apple/Google网络中介来中继正常的HTTP/S流量)
然后,请求被中继到您的服务器,该服务器位于:
196.84.32.112:8443
我很确定TCP/IP端点在Internet上不可用(我无法访问它)。所以,这就是为什么它不适合你
您可以使用此URL
https://196.84.32.112:8443/low-水平样品
并将其粘贴到黑莓设备的浏览器中,它就会工作。您的设备配置为BES,BES使用您公司的内部服务器。那些内部服务器可以到达196.84.32.112:8443
端点,因此它似乎适合您。但是,这是因为您没有像使用getConnectionSuffix()
的推送代码那样对传输进行硬编码。设备浏览器足够智能,可以找到一种有效的传输方式,BES可以到达该内部网服务器
希望这能解释孔子的观点