代码之家  ›  专栏  ›  技术社区  ›  Chris

网络差异

  •  1
  • Chris  · 技术社区  · 16 年前

    我正忙着开发一个Java应用程序来运行黑莓,但在我正在测试的一些设备上,代码似乎不起作用,我很难准确地指出问题所在。

    我的问题是:某些手机工作和不工作的问题是否与在这种GSM和CDMA上运行的网络类型有关,以及停止在某些设备上工作的代码是否在以下领域之一:

    1)侦听器-如messagelistener和phone listener

    2)UI对象-简单的测试标签和按钮

    3)使用ksoap2连接到Web服务

    该应用程序基本上监听通话和短信记录,然后将它们发送到Web服务。我遇到的问题是,在某些设备上,我看不到任何东西进入Web服务。我真的不能在手机上很容易地进行调试,因为它是在美国(我在南非)的一个设备上作为测试运行的,所以我想知道我是否可以在不需要反复在手机上测试的情况下很容易得到一些解释。

    我用v4.7开发过,在美国用v4.6和v5.0开发的设备工作正常,另一对设备(v4.6和v5.0)没有,所以我不认为这是版本问题。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Marc Novakowski    16 年前

    如果您使用的是直接TCP传输,那么GSM电话通常需要在URL的连接参数中包含网络的APN。这是使用直接TCP的最大痛点。一些GSM运营商确实在工厂的设备设置中设置了APN,但许多运营商仍然不设置APN,这取决于应用程序(或让最终用户将APN值输入设备设置)。

    如果您不想为计划支持的每个移动网络计算出APN,那么您可能需要使用另一种传输方式,如wap2(并非所有设备都可以使用)或bis(需要成为黑莓联盟计划的成员)。

        2
  •  0
  •   David    16 年前

    GSM和CDMA没有(直接)区别。操作系统可以发挥作用,但您已经测试过了。如果设备连接到BES(BlackBerry Enterprise Server),如果将安全策略下推到设备上,则可能会产生影响。

    然而,我有一种感觉,这可能与你的代码有关,没有检查所有的错误条件,因此当黑莓遇到糟糕的网络条件,或Web服务器处于高负载且无法响应,或任何其他可能导致网站的错误(同样,BES可能是一个问题,阻止ACCESS到您的网站)。

    例如,您的代码看起来是这样的:

    if(call received)
      Create Web Request
      Add call parameters to Web Request
      Execute Web Request
    

    或者看起来像这样:

    if(call received)
      Add call parameters to queue
    
    if(parameters still in queue)
      Create Web Request
      Add parameters to Web Request
      Execute Web Request
      if(request was successful)
         Remove parameters from queue