METHOD AND APPARATUS FOR JUST-IN-TIME PROVISIONING APPLICATION-RELATED INFORMATION AT A COMMUNICATION DEVICE
Software applications are provisioned at a communication device having its own memory device. A download request based on an application-related request is sent if application-related information associated with the application-related request is not stored on the memory device of the communication device. A portion of the application-related information is received based on the download request. The portion of the application-related information is stored when the portion of the application-related information is configured for storage.
This application is a Continuation of U.S. application Ser. No. 10/224,476, filed Aug. 21, 2002, entitled “Method and Apparatus for Just-in-Time Provisioning Application-Related Information at a Communication Device;” which is related to U.S. application Ser. No. 10/125,132, filed May 10, 2005, entitled “Method and Apparatus for Establishing Multiple Bandwidth-Limited Connections for a Communication Device;” which is a continuation application of U.S. application Ser. No. 10/224,331, filed Aug. 21, 2002, entitled “Method and Apparatus for Establishing Multiple Bandwidth-Limited Connections for a Communication Device,” now U.S. Pat. No. 6,891,860; and related to U.S. application Ser. No. 10/224,486, filed Aug. 21, 2002, entitled “Method and Apparatus for Managing Resources Stored on a Communication Device;” all disclosures of which are incorporated herein by reference.
BACKGROUNDThe invention relates generally to communication devices and communication systems. More specifically, the invention relates to a system and method for just-in-time provisioning application-related information at a communication device.
Communication devices, such as for example wireless phones, are increasingly incorporating additional software functionality beyond that needed to establish a communication connection. For example, communication devices can include software applications such as calendars, contact lists, calculators, etc. Moreover, additional applications based on, for example, Java languages such as Java 2 Micro Edition (J2ME) are being developed for use with communication devices. These software applications also typically involve a sizable amount of application data. For example, a software application that provides the functionality of a contact list also uses application data relating to the contact's name, phone number, etc.
These communication devices, however, typically have storage devices with a limited storage capacity. Accordingly, the limited storage capacity of typical communication devices often limits the number of applications and the amount of application-related information that can be stored on a communication device at any given time.
One known way to accommodate a large number of software applications and their related data is to provision applications as needed and to remove the applications when not needed. Such known provisioning is performed by installing and/or removing an entire application and all of its related data. For example, as an application is needed, an unused application and all of its related data are first deleted from the communication device to make room for the provisioning of the new application and its related data.
This known way of provisioning applications to communication devices, however, suffers shortcomings. For example, removing an entire application and its related data may free more memory space than is actually needed to provision the new application. This can involve more time than would otherwise be involved to free only the amount of memory needed. In addition, removing an entire application and its related data also removes an indication to the user that that application and its related data may be available again in the future. Moreover, requiring user-initiated actions to select and/or remove applications overburdens the users and unnecessarily complicates the operation of communication devices.
Thus, a need exists for a more effective form of provisioning software applications and their related data for communication devices.
SUMMARY OF THE INVENTIONSoftware applications are provisioned at a communication device having its own memory device. A download request based on an application-related request is sent if application-related information associated with the application-related request is not stored on the memory device of the communication device. A portion of the application-related information is received based on the download request. The portion of the application-related information is stored when the portion of the application-related information is configured for storage.
BRIEF DESCRIPTION OF THE DRAWINGS
Just-in-time provisioning of software applications at a communication device is performed. The provisioning is “just-in-time” in the sense that applications, application components and/or application data can be provided to the communication device as needed rather than maintaining all of this application-related information within the memory device of the communication device. These applications, application components and/or application data can be provided to the communication device as a whole or in portions. For example, separate portions of an application can be provisioned when the application can be paginated into distinctly downloadable portions. The term “pagination” is used herein to mean the division or segmentation of an application or application-related data into discrete portions. When an application is paginated, the resulting segments are referred to herein as application components.
Consequently, rather than deleting an entire application, application portions can be added and removed as the available amount of memory changes while at the same time allowing at least an indication of the application to be provided to the user. This advantageously allows the removal of just enough application portions to free up whatever amount of memory space is needed to perform other functions (e.g., execute other applications). In addition, this advantageously maintains an indication to the user that the application can be available in the future even though the entire application may be not presently provisioned.
As a need for provisioning application-related information arises, a download request based on an application-related request can be sent to, for example, a gateway through which application-related information can be routed. The term “download request” is used to mean any type of request or instruction sent from the communication device to request application-related information from the network. For example, a download request can be a request sent from the communication device to the gateway requesting that application-related information be provided to the communication device through the gateway. The term “application-related information” is used to include information related to an application operable on the communication device. Such application-related information can include, for example, applications, application components or data used by an application.
A user can send an application-related request to trigger provisioning of application-related information. The term “application-related request” is used herein to mean any type of request by a user that results in the provisioning of application-related information that is not presently available in the memory device of the communication device. For example, the user can use a keypad of a user interface to request that a particular function be performed at the communication device, such as accessing a calendar. In such a case, if the calendar information sought is not stored on the memory device of the communication device, then a download request can be formed by the communication device based on the application-related request.
Application-related information can be used in the execution of an application as soon as the application-related information is received. In some situations, the received application-related information can be stored at the communication device while, in other situations, the received application-related information need not be stored at the communication device. For example, when the received application-related information is a screen command application component, the screen command can be used for the immediate display of information at the user interface of the communication device and the screen command need not be stored on the communication device. Alternatively, when the received application-related information is a definition command application component, the definition command can be stored to the memory device of the communication device for execution by the application.
The application-related information can be associated with a connected application or a disconnected application. A connected application can receive the application-related information and use that information while communication device 100 maintains a connection with gateway 120. A disconnected application can receive the application-related information and use that information after the connection between the communication device 100 and the gateway 120 has been disconnected.
The communication device can send requests and receive information, for example, over a bandwidth-limited connection. The term “bandwidth-limited connection” is used to include any type of connection where the bandwidth of the information desired to be transmitted exceeds the available bandwidth capacity of the connection. Such a bandwidth-limited connection can include, for example, a wireless data connection configured to send and/or receive multimedia content.
Communication device 100 includes antenna 101, user interface 102, processor 103 and memory device 104. Gateway 120 includes application server 121, which includes authentication module 123 and handler 125. Handler 125 further includes device resource database 126, data pagination module 127 and request handling module 128. Application server 121 includes software configured to allow the functionality discussed below, including the functionality relating to the authentication module 123 and handler 125. Similarly, the memory device 104 of communication device 100 stores client-side software that is configured to operate with the software of application server 121. Note that although the software is described in terms of client and server software, any appropriate software configuration, such as distributed software, is possible.
The uplink connection 105 and downlink connection 107 are established for a particular communication device 100 for the duration of a session. In other words, once the communication device 100 is connected to the mobile network 110 via the uplink connection 105 and downlink connection 107, the session information associated with those connections is maintained during the duration of the session regardless of the particular status of the connections. Additional details of the uplink connection 105 and the downlink connection 107 are provided in co-pending U.S. patent application Attorney Docket NBLE-001/00US, entitled “Method and Apparatus for Establishing Multiple Bandwidth-Limited Connections for a Communication Device.”.
Because application-related information provided to communication device 100 is stored in application data store 225 of non-volatile memory 220, the corresponding applications can be implemented on communication device 100 having its own device-specific software stored in the non-volatile storage 220. Thus, customized applications can be provisioned and executed on communication device 100 in a manner compatible with the pre-existing software associated with communication device 100.
Although the memory device 200 is shown in
As step 300, a connection between the communication device 100 and the gateway 120 is established. The connection between the communication device 100 and the gateway can include an uplink connection 105 and a downlink connection 107.
At step 305, encryption is negotiated between the communication device 100 and the gateway 120. Such encryption negotiation can be based on any appropriate encryption scheme such as the private key encryption or public key encryption, for example the Public Key Infrastructure (PKI). At step 307, the user of the communication device 100 is authenticated by gateway 120 through, for example a process that verifies a previous service enrollment.
At step 310, a download request is sent from the communication device 100 to the gateway 120 based on information in the application data store 225 of memory device 200 of the communication device 100. The download request can identify, for example, application-related information sought to be downloaded to the communication device 100. The application-related information can include, for example, applications, application components or application data used by an application. At step 315, application-related information is received at the communication device 100 based on the download request.
Steps 310 and 315 relate to the activation process, by which a user first activates the communication device 100 and provisions, for example, basic applications relating to the initial operation of the communication device. Consequently, in certain circumstances, steps 310 and 315 need not be performed in conjunction with the remaining steps of the flowchart shown in
At step 320, an application indicator is provided to the user based on an application definition stored in the memory device 104 of the communication device 100. The application indicator can be, for example, a glyph that is displayed on the user interface 102 of the communication device 100 and represents an application available for operation on the communication device 100.
At step 325, an application-related request is received at the communication device 100 from the user. The application-related request can be received, for example, through a numeric keypad (not shown) of the user interface 102. The application-related request can be in response to the display of an application indicator as discussed above in connection with step 320.
At step 330, a download request is sent from the communication device 100 to the gateway 120. The download request will be sent from the communication device 100, for example, when the application-related information associated with the application-related request is not available within the memory device 104 of the communication device 100. In such a situation, the application-related information can be requested through the download request sent to the gateway 120. If the application-related information is available at the memory device 104 of the communication device 100, then the application-related information can be accessed to execute the application and the remaining portion of the flowchart shown by
At step 335, the download request sent from communication device 100 is received at the gateway 120. At step 340, an information request is sent from the gateway 120 to an appropriate destination such as, for example, network service A 140, network service B 150 or network service C 160. The information request can be sent in response to receiving the download request. For example, upon receiving the download request at gateway 120, gateway 120 can determine a destination within network 130 at which the application-related information associated with the download request is located. Based on that network destination and the application-related information being requested, gateway 120 can formulate and send the information request. At step 340, the information request is sent to, for example, network service A 140, network service B 150 or network service C 160. At step 345, the application-related information associated with the information request is received at gateway 120.
At step 350, a determination is made as to whether the available space on the memory device 104 of the communication device 100 is sufficient to store the application-related information associated with the download request. At conditional step 355, if the available space on the memory device 104 of the communication device 100 is insufficient to store the application-related information associated with the download request, then the process proceeds to step 360. At step 360, resource management is performed so that the amount of available memory space is increased. For example, resource management can be performed according to the methods described in co-pending U.S. patent application Attorney Docket NBLE-003/00US, entitled “Method and Apparatus for Managing Resources Stored on a Communication Device.” Upon completing the resource management process of step 360, the process proceeds to step 350.
Returning to conditional step 355, if the available space on the memory device 104 of the communication device 100 is sufficient to store the application-related information associated with the download request, then the process proceeds to step 365. At step 365, the application-related information associated with the download request is sent from the gateway 120 to the communication device 100. At step 370, the application-related information associated with the download request is received at the communication device 100.
At step 375, the application associated with the application-related information is automatically executed. The application associated with the application-related information is automatically executed in the sense that the portion of the application, to which application-related information is related, can be executed. For example, where the application-related information is application data (e.g., contact or calendar information), the application can make such application data available to the user within the application being executed.
For another example, where the application-related information is an application component, the application component can be displayed or executed depending upon the purpose of the application component. For example,
Step 375 can be performed with a connected application or a disconnected application. A connected application can receive the application-related information and use that information while communication device 100 maintains a connection with gateway 120. A disconnected application can receive the application-related information while connection between communication device 100 and gateway 120 is maintained, and then use that information after the connection between the communication device 100 and the gateway 120 has been disconnected. In sum, the application can perform operations using the received application-related information regardless of whether the connection between communication device 100 and gateway 120 is maintained after the application-related information is received.
Application servers 1321 and 1381 each include software configured to allow the functionality discussed above, including the functionality relating to the authentication modules 1323 and 1383, and handlers 1325 and 1385, respectively. Similarly, communication device 1300 includes client-side software that is configured to operate with the software of application servers 1321 and 1381. Note that although the software is described in terms of client and server software, any appropriate software configuration, such as distributed software, is possible. The uplink connection 1305 and downlink connection 1307 are established for a particular communication device 1300 for the duration of a session, as described in co-pending U.S. patent application Attorney Docket NBLE-001/00US, entitled “Method and Apparatus for Establishing Multiple Bandwidth-Limited Connections for a Communication Device.”
In a distributed configuration, applications can be provisioned. As shown in
Although
Similar to the above-described embodiments with multiple downlink connections and distributed downlink gateways, embodiments with multiple uplink connections and distributed uplink gateways are also possible. Alternatively, embodiments with both multiple downlink connections, and distributed downlink gateways, and multiple uplink connections and distributed uplink gateways are also possible.
ConclusionWhile various embodiments of the invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the invention should not be limited by any of the above-described embodiments, but should be defined only in accordance with the following claims and their equivalents.
The previous description of the embodiments is provided to enable any person skilled in the art to make or use the invention. While the invention has been particularly shown and described with reference to embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention.
Claims
1. A method, comprising:
- sending a download request when a screen command application component associated with a software application is not stored on a memory device of a communication device, the screen command application component being a paginated application component associated with the software application;
- receiving the screen command application component at the communication device; and
- displaying a screen at a user interface of the communication device based on the screen command application component without storing the screen command application component on a non-volatile memory of the memory device.
2. The method of claim 1, further comprising:
- receiving a definition command application component corresponding with the screen command application component, the definition command application component being associated with the software application.
3. The method of claim 1, further comprising:
- receiving a definition command application component corresponding with the screen command application component, the definition command application component being associated with the software application; and
- storing the definition command application component on at least one of the non-volatile memory of the memory device or a volatile memory of the memory device.
4. The method of claim 1, wherein the screen application component is irretrievable at the communication device after the executing.
5. The method of claim 1, wherein the screen command application component is received over a bandwidth-limited connection, the screen command application component being operable when the bandwidth-limited connection is not maintained after the receiving.
6. The method of claim 1, wherein the download request is sent and the screen application component is received over a wireless connection, the communication device is a wireless communication device.
7. The method of claim 1, further comprising:
- receiving a definition command application component corresponding with the screen command application component, the definition command application component being associated with the software application; and
- executing the definition command application component when a selectable indicator associated with the screen application component is selected in response to a request from a user.
8. The method of claim 7, wherein the download request is a first download request, the application-related request is a first application-related request,
- the method further comprising: triggering a second application-related request after the executing; sending a second download request in response to the second application-related request when an application-related information associated with the second application-related request is not stored on the memory device of the communication device, the application-related information being associated with the software application; and receiving the application-related information at the communication device.
9. The method of claim 8, wherein the screen command application component is a first screen command application component, the definition command application component is a first definition command application component, the application-related information is at least one of a second screen application component or a second definition command application component.
10. A method, comprising:
- receiving a first application component from a plurality of application components, each application component from the plurality of application components being associated with a software application, the first application component being associated with a set of selectable indicators, a number of selectable indicators from the set of selectable indicators being greater than zero;
- receiving a request for a second application component from the plurality of application components when a selectable indicator from the set of selectable indicators is selected in response to a request from a user; and
- defining a download request in response to the request for the second application component and when the second application component is not stored on a memory device of a communication device, the download request being defined to request the second application component from the plurality of application components.
11. The method of claim 10, wherein each selectable indicator from the set of selectable indicators is configured to trigger download of at least one application component from the plurality of application components when the at least one application component is not stored on the memory device, each selectable indicator having a unique selectable portion.
12. The method of claim 10, wherein the second application component is retrieved from a location disposed outside of the communication device based on the download request.
13. The method of claim 10, wherein the selectable indicator is at least one of a tool bar indicator or a drop-down menu indicator.
14. The method of claim 10, wherein the first application component is a first screen application component, the second application component is a second screen application component,
- the method further comprising: displaying an image associated with the first screen application component at a first time on a user interface of the communication device after the receiving the first screen application component; receiving the second screen application component based on the download request; and modifying the image at a second time based on at least a portion of the second screen application component, the second time being after the first time.
15. The method of claim 14, wherein the displaying includes displaying without storing the image associated with the first screen command application component on a non-volatile memory of the memory device.
16. The method of claim 10, farther comprising defining the request for the second application when the selectable indicator is selected based on a third application component that corresponds with the first application component.
17. The method of claim 10, wherein the second application component is associated with a set of selectable indicators, the set of selectable indicators for the first application component being different than the set of selectable indicators for the second application component.
18. A method, comprising:
- displaying at a first time on a user interface of a communication device an image associated with a first screen application component and having a selectable indicator, the selectable indicator being associated with a second screen application component, the second screen application component not being stored and not being displayed on the communication device at the first time, the first screen component and the second screen component being associated with a software application;
- sending at a second time a download request in response to the selectable indicator being selected by a user, the second time being after the first time;
- receiving the second screen application component in response to the download request; and
- displaying on the user interface at a third time an image associated with the second screen application component, the third time being after the second time.
19. The method of claim 18, further comprising defining the download request based on a definition command component that corresponds with the first screen application component, the defining being in response to selection of the selectable indicator.
20. The method of claim 18, wherein the selectable indicator is at least one of a tool bar indicator or a drop-down menu indicator.
Type: Application
Filed: Jul 31, 2006
Publication Date: Feb 21, 2008
Inventor: Charles Gautney (Germantown, MD)
Application Number: 11/461,139
International Classification: G06F 9/445 (20060101); G06F 9/44 (20060101); H04M 3/00 (20060101);