有没有什么方法可以在 Java ME 中实现推送技术,即没有 SMS?
我知道基于流/基于网络的通知是解决方案,但是如何配置将通知发送到客户端的服务器?我们如何获取要发送通知的收件人(客户)地址?
有一个 SMS 教程https://www.ibm.com/developerworks/java/tutorials/wi-midpreg/但我需要通过 http 实现它。
有没有什么方法可以在 Java ME 中实现推送技术,即没有 SMS?
我知道基于流/基于网络的通知是解决方案,但是如何配置将通知发送到客户端的服务器?我们如何获取要发送通知的收件人(客户)地址?
有一个 SMS 教程https://www.ibm.com/developerworks/java/tutorials/wi-midpreg/但我需要通过 http 实现它。
我们如何获取要发送通知的收件人(客户)地址?
这就是事情通常的运作方式。当电话不使用数据服务时,它没有 IP 地址。当手机请求数据时,它将接收一个动态 IP 地址并在数据通道处于活动状态时保留该地址。该地址在电信网络中是唯一的,并且代理将使其与互联网的其余部分一起使用。
您可以使用的一种方法是在应用程序和服务器之间建立永久套接字连接,但这不能很好地扩展。
我的看法?如果你让它与 SMS 一起工作,用它来唤醒你的应用程序,然后让你的应用程序打开与服务器的连接并下载它需要的数据。有些手机甚至允许应用程序在没有 UI 的情况下运行。
不幸的是,没有标准的方式来推送所有 j2me。
由于无法为所有 j2me 提供后台应用程序/进程,因此您自己也很难实现。
他们现在正在推动诺基亚“NNA”的解决方案。但这仅适用于某些最新的操作系统版本。
PushRegistry API 文档(可在线获取)不限于 SMS。
特别是,数据报和套接字被明确列为示例:
示例描述符文件声明性表示法
以下是一个示例描述符文件条目,它将在端口 79 保留一个流套接字,并在端口 50000 保留一个数据报连接。(端口号由 IANA 维护,涵盖众所周知的、用户注册的和动态端口号)[参见IANA 端口号码登记]
MIDlet-Push-1: socket://:79, com.sun.example.SampleChat, * MIDlet-Push-2: datagram://:50000, com.sun.example.SampleChat, *
请注意,MIDP 2 规范声明特定协议支持是可选的,是否为 MIDlet 启用它取决于实现:
连接与推送注册支持
并非所有通用连接都适合用作推送应用程序传输。即使设备上支持作为入站连接类型的协议,也不需要将其启用为有效的推送机制。例如,平台可能支持 a 中的服务器套接字连接
MIDlet
,但可能不支持用于推送启动功能的入站套接字连接。当平台不支持该可选功能时,从方法和方法ConnectionNotFoundException
中抛出A。registerConnection
registerAlarm