gpt4 book ai didi

blackberry - 通过 BES/BIS , BlackBerry 推送通知

转载 作者:行者123 更新时间:2023-12-03 13:03:14 24 4
gpt4 key购买 nike

我正在尝试为 OS < 7.X 使用推送通知。

我下载了示例服务器/客户端代码。我在我的设备上部署了客户端代码,并在提供的 tomcat 上部署了低级示例代码。

作为记录,当我在这里注册推送通知时,我使用 BIS 选项进行了注册。现在我实际上得到了一个黑莓,我被告知它正在使用 BES(我不认为这是我将要描述的问题的根源......)。

在设备上,在示例应用程序中,我将收到的电子邮件中给出的所有正确设置都放入其中。

我的运行 tomcat 服务器的电脑和我的手机都连接到同一个 wifi。

我正在尝试从设备浏览器连接到服务器,例如 https://196.84.32.112:8443/low-level-sample
并且浏览器正常打开页面,这意味着我可以从手机连接到我的服务器。

现在,当我从设备示例应用程序中点击注册时(我在设置中尝试了两个 BIS/BES 选项),我总是收到以下错误:

请求注册失败。由 java.io.IOException 引起:网络操作 [订阅] 失败。确保内容提供者 URL 可访问。

在日志中我得到:

打开网址:我的服务器网址附加了用户名/密码/型号/连接类型等信息
内容提供者网络命令 [订阅] 失败,原因是无法连接到 196.84.32.112:8443命令“注册”失败,错误:java.io.IOException:网络操作[订阅]失败。确保内容提供者 URL 可访问。


一个想法是我应该再次注册新的推送 key 并使用 BIS/BES 选项而不仅仅是 BIS ,但这里的问题似乎是没有与本地服务器的连接,而不是 RIM 服务器。我已经尝试注册了,我正在等待带有新设置的邮件。

我也对 BIS/BES 选项有点困惑。我不知道我的用户是否会启用 BIS 或 BES,所以我在代码中放了什么?!在示例应用程序中,它要求我在 BIS 或 BES 之间进行选择,但是当应用程序要投入生产时,我需要以编程方式做出选择,我会选择什么?!或者此选择仅用于应用程序的评估/开发,并且在生产中还有另一台服务器?

最佳答案

我认为这里已经说了所有正确的事情,但我希望我们可以整合一些答案,并结束这个问题。
你没有分享你的代码,这让事情变得更加困难,但是很多人使用 RIM/BlackBerry 提供的 PushDemo 源,其中连接后缀被硬编码在 /pushdemo/com/rim/samples/device/push/PushUtils.java 中。 :

private static String getConnectionSuffix() {
return ";deviceside=false;ConnectionType=mds-public";
}
我也从阅读 your other question 中猜测这一点.
通过这样做,您已经对 BlackBerry 传输类型的 BIBS 进行了硬编码。 BlackBerry supports many different transports ,例如 BES、BIS、BIBS 或 WAP。 BIBS 传输会将请求从您的设备发送到 Internet 上的 BlackBerry 服务器。 (注意:这部分可能会让 iOS/Android 开发人员感到困惑,因为这些平台不提供 Apple/Google 网络中介来中继正常的 HTTP/S 流量)
然后,请求被中继到您的服务器,该服务器位于:
196.84.32.112:8443
我很确定 TCP/IP 端点在 Internet 上不可用(我无法访问它)。所以,这就是它对你失败的原因。
你可以把这个网址
https://196.84.32.112:8443/low-level-sample
并将其粘贴到您的 BlackBerry 设备的浏览器中,它将起作用。您的设备配置为 BES,它使用您公司的内部服务器。那些内部服务器 可以 到达 196.84.32.112:8443端点,所以它似乎对你有用。但是,那是因为您没有对传输进行硬编码,就像在使用 getConnectionSuffix() 的推送代码中那样。 .设备浏览器足够智能,可以找出有效的传输方式,而 BES 则可以访问该 Intranet 服务器。
希望这可以解释令人困惑的部分。
解决方案
正如其他人所说,解决方案是让您公司的 IT 人员通过他们的防火墙访问 IP 地址 196.84.32.112 和端口 8443。这将允许黑莓服务器成功访问它。
另一种解决方案是更改 PushUtils.java 代码以避免 BIBS 传输:
private static String getConnectionSuffix() {
return ";deviceside=false";
}
如果您想要真正灵活的代码,那么我建议重写 PushUtils.java 代码,因为它似乎使用 5.0 之前的 HTTP 连接逻辑。 ConnectionFactory in OS 5.0+在支持多种传输时,使这更容易,更健壮......
要回答有关支持多种传输的用户的问题,请查看 this blackberry.com example ,特别是 MyConnectionFactory类(class)。它允许您选择您的应用允许哪些传输,以及它首先尝试哪些传输。
最终,是否公开您的服务器的决定取决于它将如何使用,以及您是否会有非公司 Internet 客户端尝试向您的公司服务器注册。

关于blackberry - 通过 BES/BIS , BlackBerry 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com