Dynamically adjusting a data usage plan based on data usage statistics
09887895 ยท 2018-02-06
Assignee
Inventors
- Gil ZALMANOVITCH (Seattle, WA, US)
- Gregory James SCOTT (Seattle, WA, US)
- Shai Guday (Redmond, WA)
- Alec Garvin KWOK (Redmond, WA, US)
- Yue JIANG (Redmond, WA, US)
- Kenneth Vincent MA (Seattle, WA, US)
Cpc classification
H04L43/0876
ELECTRICITY
H04M15/85
ELECTRICITY
H04W4/70
ELECTRICITY
H04L43/04
ELECTRICITY
H04M1/72403
ELECTRICITY
H04W88/06
ELECTRICITY
H04W4/60
ELECTRICITY
H04W8/18
ELECTRICITY
International classification
H04M11/00
ELECTRICITY
H04W4/00
ELECTRICITY
H04M15/00
ELECTRICITY
H04L12/14
ELECTRICITY
Abstract
Embodiments enable data usage plans and data usage statistics to be shared among user computing devices. In some embodiments, a web service receives a schema populated with data describing the data usage plan from a mobile operator. The web service distributes the populated schema to the user computing devices, and subsequently distributes updated portions of the schema as the data usage plan is updated by the mobile operator. The web service may also collect the data usage statistics from the user computing devices and the mobile operator, reconcile any differences, and send synchronization notifications to the user computing devices based on the reconciliation. In some embodiments, users are able to view bandwidth consumption by a plurality of user computing devices sharing the same data usage plan.
Claims
1. A system for analyzing data usage statistics associated with a data usage plan, the system comprising: a memory area associated with a mobile computing device, said memory area storing data describing a plurality of data usage plans of different types; and a processor programmed to: access the data describing the plurality of data usage plans of the different types, each type of the plurality of data usage plans comprising a threshold value representing a maximum amount of network data consumption allotted to each of a plurality of different network connections; receive data usage statistics describing an amount of network data consumed by the mobile computing device under each of the plurality of data usage plans of different types compared to a total amount of network data consumed; and present, to a user of the mobile computing device, an analysis based on the accessed data, the received data usage statistics, and a type of data usage plan, wherein a different analysis is presented for each different type of data usage plan from the plurality of data usage plans.
2. The system of claim 1, wherein the processor is programmed to present at least an amount of network data remaining for use, an amount of network data consumed during the current billing period, and a quantity of time remaining within the current billing period.
3. The system of claim 1, wherein the processor is programmed to present at least an amount of network data remaining for use, an amount of network data consumed within a time period, and a quantity of time remaining for expiration of the amount of network data remaining.
4. The system of claim 1, wherein the processor is programmed to present at least a total amount of network data consumed within a time period over a plurality of different types of network connections.
5. The system of claim 1, the type of usage plan includes one or more first threshold values, at least one of the one or more first threshold values representing a maximum amount of network data consumption allotted to one or more different network connections under the type of usage plan.
6. The system of claim 1, wherein the plurality of data usage plans are stored in the memory area as extensible markup language schemas.
7. The system of claim 1, wherein the processor is programmed to receive the data usage statistics by receiving at least a portion of the data usage statistics from one or more of a mobile operator, a web service, and other computing devices associated with the user.
8. A method comprising: accessing, by a computing device, data describing a plurality of data usage plans of different types associated with at least one computing device associated with a user, each type of the plurality of data usage plans comprising a threshold value representing a maximum amount of network data consumption allotted to each of a plurality of different network connections; receiving data usage statistics describing an amount of network data consumed by the at least one computing device under each of the different types of the plurality of data usage plans compared to a total amount of network data consumed; comparing the accessed data of the plurality of data usage plans with the received data usage statistics; and presenting, to the user, an analysis based on the comparison, the analysis associated with a type of data usage plan, wherein a different analysis is presented for each different type of data usage plan from the plurality of data usage plans.
9. The method of claim 8, wherein receiving the data usage statistics comprises receiving the data usage statistics from one or more of the following: a mobile operator, a web service, and other computing devices associated with the user.
10. The method of claim 8, wherein the type of data usage plan includes one or more first threshold values, at least one of the one or more first threshold values representing a maximum amount of network data consumption allotted to one of a plurality of different network connections under the type of data usage plan.
11. The method of claim 8, wherein accessing data comprises accessing an extensible markup language schema, wherein the schema includes a plurality of fields comprising one or more of the following: peak times, off-peak times, peak time network data consumption quota, off-peak time network data consumption quota, peak time network data consumption remaining, off-peak time network data consumption remaining, a roaming rate, a mobile operator name, a billing cycle type, and a network connection type.
12. The method of claim 8, wherein a plurality of other computing devices and the at least one computing device associated with the user share the plurality of data usage plans.
13. The method of claim 8, wherein at least one of the plurality of data usage plans represents terms and conditions under which a mobile operator provides data transfer services to the at least one computing device.
14. The method of claim 8, further comprising updating a portion of at least one of the plurality of data usage plans.
15. One or more computer storage devices embodying computer-executable components, said components comprising: a communications interface component that on execution by at least one processor causes the at least one processor to: receive data describing a plurality of data usage plans of different types associated with at least one computing device, each type of the plurality of data usage plans comprising a threshold value representing a maximum amount of network data consumption allotted to each of a plurality of different network connections, and receive data usage statistics describing an amount of network data consumed by the at least one computing device under each of the plurality of data usage plans; a prediction component that on execution by the at least one processor causes the at least one processor to analyze the data usage statistics and the data describing the plurality of data usage plans as received by the communications interface component; and a user interface component that on execution by the at least one processor causes the at least one processor to present an analysis to a user of the at least one computing device based on the analysis by the prediction component and types of the plurality of data usage plans, wherein a different analysis is presented for each different type of data usage plan from the plurality of data usage plans.
16. The computer storage devices of claim 15, wherein the user interface component further displays a plurality of user interface elements that are updated on receiving updated data usage statistics.
17. The computer storage devices of claim 15, wherein the user interface component presents, based on a type of data usage plan, at least an amount of network data remaining for use, an amount of network data consumed during the current billing period, and a quantity of time remaining within the current billing period.
18. The computer storage devices of claim 15, wherein the user interface component presents, based on a type of data usage plan, at least an amount of network data remaining for use, an amount of network data consumed within a time period, and a quantity of time remaining for expiration of the amount of network data remaining.
19. The computer storage devices of claim 15, wherein the user interface component presents, for a type of data usage plan, at least a total amount of network data consumed within a time period over a plurality of different types of network connections.
20. The computer storage devices of claim 15, wherein at least one of the plurality of data usage plans represents terms and conditions under which a mobile operator provides data transfer services to the at least one computing device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11) Corresponding reference characters indicate corresponding parts throughout the drawings.
DETAILED DESCRIPTION
(12) Referring to the figures, embodiments of the disclosure enable a centralized web service 108 to interact with user computing devices and mobile operators 111 to distribute data usage plans and to aggregate data usage statistics. For example, the web service 108 pulls information from the mobile operators 111 regarding customers (e.g., users 104) and pushes data usage plan changes or updates to a given user 104, segments of the users 104, or each of the users 104.
(13) In some embodiments, the web service 108 receives a schema 116 populated with data relating to a data usage plan from the mobile operator 111 and distributes the populated schema 116 to one or more of the user computing devices. The data usage plan represents the terms and conditions (e.g., data consumption allotment) under which the mobile operator 111 provides data transfer services to the user computing devices. As the mobile operator 111 updates portions of the data usage plan, the web service 108 may receive and synchronize only the updated portions of the schema 116 with the user computing devices, in some embodiments. For example, the web service 108 does not distribute the other portions of the schema 116 that were not updated.
(14) The web service 108 may further generate, monitor, collect, and/or receive the data usage statistics from the mobile operators 111 and from one or more of the user computing devices. The data usage statistics represent an amount of data consumed by the user computing devices under the data usage plan. The web service 108 reconciles any differences in the received data usage statistics, and sends a synchronization notification to the user computing devices based on the reconciliation.
(15) Referring to
(16) The user computing devices include any device executing instructions (e.g., as application programs, operating system functionality, or both) to implement operations and functionality. The user computing devices may include, for example, the mobile computing device 102 or any other portable device. In some embodiments, the mobile computing device 102 includes a mobile telephone (e.g., mobile telephone 404 in
(17) Communication to/from the user computing devices may occur using any protocol or mechanism over one or more of the networks 109. The networks 109 represent any infrastructure or other means for sending and/or receiving data. The networks 109 may include wired and/or wireless networks.
(18) One or more of the mobile operators 111 communicate with the web service 108 and/or the user computing devices via the network 109. Further, the user computing devices communicate with the web service 108, or other entity that performs the operations described herein as being associated with the web service 108. The web service 108 may further store, or have access to, a computer-executable schema component 122 and a computer-executable statistics component 124. Operation of the schema component 122 and the statistics component 124, when executed, is described below with reference to
(19) For convenience in illustrating and describing
(20) In some embodiments, the mobile computing device 102 has at least one processor 110, a memory area 112, and at least one user interface (not shown). The processor 110 includes any quantity of processing units, and is programmed to execute computer-executable instructions for implementing aspects of the disclosure. The instructions may be performed by the processor 110 or by multiple processors executing within the mobile computing device 102, or performed by a processor external to the mobile computing device 102. In some embodiments, the processor 110 is programmed to execute instructions such as those illustrated in the figures (e.g.,
(21) In some embodiments, the processor 110 represents an implementation of analog techniques to perform the operations described herein. For example, the operations may be performed by an analog computing device and/or a digital computing device.
(22) The mobile computing device 102 further has one or more computer readable media such as the memory area 112. The memory area 112 includes any quantity of media associated with or accessible by the mobile computing device 102. The memory area 112 may be internal to the mobile computing device 102 (as shown in
(23) The memory area 112 stores, among other data, one or more applications 114. The applications 114, when executed by the processor 110, operate to perform functionality on the mobile computing device 102. Exemplary applications 114 include mail application programs, web browsers, calendar application programs, address book application programs, messaging programs, media applications, location-based services, search programs, and the like. The applications 114 may communicate with counterpart applications or services such as the web services 108 accessible via the network 109. For example, the applications 114 may represent downloaded client-side applications that correspond to server-side services executing in a cloud.
(24) The mobile computing device 102 further establishes and maintains one or more network connections 130 representing communication channels or other means for sending and/or receiving data over the network 109. Exemplary network connections 130 include, but are not limited to, Wi-Fi, cellular, tethered, BLUETOOTH brand communication, near-field communication (NFC), and more. The network connections 130 may also be categorized into voice, text, data, or other categories or types of network traffic.
(25) The memory area 112 further stores at least one schema 116. The schema 116 represents the data usage plan associated with the user 104 of the mobile computing device 102. For example, the user 104 has contracted with the mobile operator 111 to receive network data transfer services from the mobile operator 111. The data usage plan describes the services provided by the mobile operator 111, such as the amount of network data the user 104 can consume during a particular duration (e.g., a billing time period). For example, the data usage plan describes threshold values 118 associated with the network connections 130 of one or more devices of the user 104. The threshold values 118 represent the maximum amount of data consumption allotted under the data usage plan for the network connections 130. For example, one threshold value 118 may indicate the maximum amount of data consumption for a Wi-Fi connection, while another threshold value 118 indicates the maximum amount of data consumption for a cellular data connection.
(26) The schema 116 may be defined by the web service 108, by the mobile operator 111, or by another entity. In general, the schema 116 enables descriptions of the parts, components, services, features, or other aspects of the data usage plan including, but not limited to, multi-rate data plans, peak times, roaming rates, allotted data consumption per network connection 130, etc. In some embodiments, the schema 116 allows the mobile operators 111 to send out updated portions of the schema 116 corresponding to updated parts of the data usage plan.
(27) In some embodiments, the schema 116 includes a plurality of fields. Each of the threshold values 118 may be associated with one or more of the fields. For example, the fields may correspond to one or more of the following: peak times, off-peak times, peak time data consumption quota, off-peak time data consumption quota, peak time data consumption remaining, off-peak time data consumption remaining, a roaming rate and rules, a mobile operator name, a billing cycle type, a network connection type, identification of free hosts available for connection, a list of mobile hotspots, and any other elements or information pertaining to the data usage plan. The list of free hosts represents zero-rated or reduced cost hosts (e.g., visiting particular web sites does not count against the data usage plan).
(28) The schema 116 may also include fields supporting different billing rates per host accessed, per weekend, per night, friends and family rates, peak and off-peak rates, and more. The schema 116 also allows each mobile operator 111 the flexibility to define complex plans including broadly offered plans, and dynamic, short-term offers to specific users 104 likely to use a specific part or parts of the overall services. Other offers based on any combination of the metrics obtained are available to the mobile operator 111.
(29) The schema 116 stored by the mobile computing device 102 may also include fields corresponding to data usage statistics collected, generated, or received by the mobile computing device 102 and/or the mobile operators 111. For example, to facilitate sharing the data usage statistics among the mobile operators 111, web service 108, and/or user computing devices, the mobile operators 111, web service 108, and the user computing devices may populate the schema 116 with the data usage statistics.
(30) While the schema 116 may take any form or structure, the schema 116 may be implemented as XML schema. Appendix A includes an exemplary XML schema for use in aspects of the disclosure.
(31) The memory area 112 further stores exemplary computer-executable components such as a communications interface component 126 and a user interface component 128. In some embodiments, the communications interface component 126 includes a network interface card and/or computer-executable instructions (e.g., a driver) for operating the network interface card. In some embodiments, the communications interface is operable with near-field communication (NFC) tags.
(32) The user interface component 128 may include a graphics card for displaying data to the user 104 and receiving data from the user 104. The user interface component 128 may also include computer-executable instructions (e.g., a driver) for operating the graphics card. Further, the user interface component 128 may include a display (e.g., a touch screen display or natural user interface) and/or computer-executable instructions (e.g., a driver) for operating the display. The user interface component 128 may also include one or more of the following to provide data to the user 104 or receive data from the user 104: speakers, a sound card, a camera, a microphone, a vibration motor, one or more accelerometers, a BLUETOOTH brand communication module, global positioning system (GPS) hardware, and a photoreceptive light sensor. For example, the user 104 may input commands or manipulate data by moving the computing device in a particular way.
(33) Referring next to
(34) At 202, the web service 108 receives, from at least one of the mobile operators 111, the schema 116 populated with data describing the data usage plan associated with one or more of the user computing devices. At 204, the web service 108 distributes the received, populated schema 116 to the user computing devices. Subsequently, the web service 108 may receive at 206 an updated portion of the schema 116 from the mobile operator 111. The updated portion of the schema 116 corresponds to an updated portion of the data usage plan. For example, the mobile operator 111 may update one or more of the following: roaming agreements, fallback plans, free hosts, mobile hotspots, and any other element and information pertaining to the user's data plan that has an impact on data usage, cost, and/or tariff.
(35) The web service 108 distributes only the received, updated portion of the schema 116 to the user computing devices at 208. In this manner, the mobile operator 111 is able to update portions of the data usage plan and push only those updated portions (e.g., not the entire data usage plan) to subscribers (e.g., user 104), thus reducing the amount of network data consumed. In embodiments in which there are multiple updated portions of the schema 116, the web service 108 may decide to distribute the updated portions in separate batches, such as at different times or during particular time intervals. In this manner, the web service 108 is able to take advantage of reduced cost network transfers (e.g., off-peak times) to reduce or at least manage the network data consumption of the user computing devices.
(36) Rather than distributing the populated schema 116 or portions thereof, the web service 108 may send a notification to the user computing devices to synchronize their version of the populated schema 116 with that of the web service 108. In such embodiments, upon receipt of the notification from the web service 108, one or more of the user computing devices may send a synchronization request to the web service 108. Upon receipt of the synchronization request, the web service 108 provides the populated schema 116 or updated portions of the schema 116 to the requesting user computing devices.
(37) In some embodiments, the web service 108 may store, or have access to, one or more computer-executable components for implementing one or more of the operations illustrated in
(38) In some embodiments, the web service 108 may further collect, reconcile, and distribute data usage statistics to the user computing devices. The data usage statistics may be viewed as a current or instant snapshot of the amount of data transmitted and/or received (e.g., consumed) by the computing devices of the user 104 that share the data usage plan. The web service 108 may collect information relating to text messages, data, voice calls, minutes used, voice over Internet Protocol (VoIP) usage, and any other element of usage consumed by, or that impacts, the user computing devices to produce the data usage statistics. The data usage statistics identify, to a granularity of time (e.g., per minute) or data (e.g., per kilobyte), how much data has been sent and/or received by the mobile computing device 102 or other user computing devices and over which network connections 130. Other data usage statistics are contemplated, however. For example, the data usage statistics may further identify the time and day of usage, location of usage, network connection 130, technology usage, the subscriber identity module (SIM) card or other user identity module used for dual SIM scenarios, the international mobile station equipment identity (IMEI) or other device identifier for multi-device scenarios, the Internet protocol (IP) address or other address of the access point used for Wi-Fi scenarios, the IP address or other address of the target computer (e.g., for whitelist/blacklists in data usage), the application responsible for the data transfer, etc. In some examples, the web service 108 tracks or monitors network data consumption by the user computing devices by compiling the data usage statistics directly (e.g., monitor network traffic) and/or by collecting the data usage statistics from the mobile computing device 102 (or other user computing devices) and/or the mobile operator 111.
(39) For example, the web service 108 may collect, monitor, or generate first data usage statistics 120 from the mobile computing device 102 and second data usage statistics 132 from the mobile operator 111. In some embodiments, the first data usage statistics 120 represent network data consumed under the data usage plan by the mobile computing device 102 as determined and/or measured (e.g., collected and stored) by the mobile computing device 102. For example, the mobile computing device 102 collects ongoing usage data relating to network data transfers, such as from device radios, drivers, and accelerometers.
(40) In other embodiments, the first data usage statistics 120 represent network data consumed under the data usage plan by each of the user computing devices, not just the mobile computing device 102. In such embodiments, the mobile computing device 102 receives updates of network data consumption by the other user computing devices sharing the same data usage plan. The second data usage statistics 132 represent network data consumed under the data usage plan by the mobile computing device 102 as determined and/or measured (e.g., collected and stored) by the mobile operator 111. In other embodiments, the second data usage statistics 132 represent network data consumed under the data usage plan by each of the user computing devices, not just the mobile computing device 102. In such embodiments, the mobile operator 111 monitors network data consumption by the other user computing devices sharing the same data usage plan. For example, the second data usage statistics 132 may represent the network data collectively consumed by the mobile telephone 404, tablet, and laptop of the user 104.
(41) In a further example, one or more of the mobile operators 111 collect data usage statistics corresponding to a plurality of data usage plans. In such an example, there may a plurality of sets of data usage statistics (e.g., one set for each data usage plan or user 104).
(42) In some embodiments, the mobile operator 111 may have more current and/or more accurate data usage statistics 120 for one or more of the user computing devices than the user computing devices. For example, the mobile operator 111 may have more current and/or more accurate data usage statistics 120 for particular network connections 130 than the user computing devices. The mobile operator 111 may push, or transmit upon demand, such data usage statistics 120 to the web service 108. The web service 108 integrates or otherwise reconciles the data from the mobile operator 111 and/or the user computing devices to produce the data usage statistics 120.
(43) For example, if differences exist in the data usage statistics received from the mobile computing device 102 and from the mobile operator 111 (e.g., the data from the mobile operator 111 may be 24-48 hours old), the web service 108 reconciles the differences to provide the user 104 with the most current information. Reconciling the differences includes, for example, examining time stamps or other collection dates and favoring, weighting, or choosing the more recently collected data. For example, the web service 108 may compare a timestamp associated with the first data usage statistics 120 and a timestamp associated with the second data usage statistics 132 to determine which of the data usage statistics is more recent or up-to-date. Based on the reconciling, the web service 108 may send a notification to one or more of the user computing devices. In such embodiments, upon receipt of the notification from the web service 108, one or more of the user computing devices may send a synchronization request to the web service 108. For example, the web service 108 identifies those user computing devices that have outdated data usage statistics.
(44) Upon receipt of the synchronization request from the user computing devices, the web service 108 provides the most recent or up-to-date data usage statistics to those requesting user computing devices. For example, the web service 108 may provide the second data usage statistics 132 (e.g., from the mobile operator 111) to the requesting user computing devices.
(45) In some embodiments, the web service 108 executes the statistics component 124 to collect and analyze the data usage statistics. The statistics component 124, when executed by the web service 108, receives the first data usage statistics 120 as collected by the user computing device and the second data usage statistics 132 as collected by the mobile operator 111. The statistics component 124 reconciles the first data usage statistics 120 and the second data usage statistics 132, and sends a synchronization notification to the user computing device based on the reconciliation. For example, if the statistics component 124 determines that the first data usage statistics 120 collected or maintained by the user computing device is out-of-date, the web service 108 sends the synchronization notification to the user computing device. In response to receiving the synchronization notification, the user computing device synchronizes the first data usage statistics 120 with the second data usage statistics 132 (e.g., compares timestamps associated with the first data usage statistics 120 and the second data usage statistics 132). For example, the user computing device may replace the first data usage statistics 120 with the second data usage statistics 132.
(46) The web service 108 may store the schema component 122 and the statistics component 124 on one or more computer storage media. Further, the schema component 122 and the statistics component 124 may execute independently of each other (e.g., not sequentially, or without interaction or dependency between the two components). For example, the schema component 122 and the statistics component 124 may each be executed by a separate thread.
(47) Referring next to
(48) At 302, the computing device collects data usage statistics (e.g., the first data usage statistics 120) relating to the data usage plan. The first data usage statistics 120 represent network data consumption under the data usage plan by the computing device as determined by the computing device. The computing device stores the collected first data usage statistics 120 in, for example, the memory area 112. At 304, the computing device receives data usage statistics (e.g., the second data usage statistics 132) relating to the data usage plan. The second data usage statistics 132 represent network data consumption under the data usage plan by the computing device as determined by the mobile operator 111.
(49) At 306, the computing device reconciles the collected first data usage statistics 120 and the received second data usage statistics 132. For example, the computing device may compare timestamps associated with the first data usage statistics 120 and the second data usage statistics 132 to identify the more recent, or up-to-date, measure of network data consumption under the data usage plan. At 308, the computing device updates the first data usage statistics 120 based on the reconciliation. For example, the computing device may conclude that the first data usage statistics 120 are more recent and hence more accurately represent current, cumulative network data consumption than the second data usage statistics 132. In such an example, the computing device makes no changes to the collected first data usage statistics 120.
(50) As another example, the computing device may conclude that the second data usage statistics 132 are more recent and hence more accurately represent current, cumulative network data consumption than the first data usage statistics 120. In such an example, the computing device may replace the first data usage statistics 120 stored in the memory area 112 with the second data usage statistics 132.
(51) As described with reference to
(52) Referring next to
(53) Referring next to
(54) Referring next to
(55) In
(56) The user interface 602 also displays the threshold values 118 associated with each of the network connections 130. The threshold values 118 are taken from the data usage plan. For example, the data usage plan indicates that the user 104 has a maximum of 5 gigabytes (GB) of data usage available for the cellular network connection, 2 GB of data usage for the tethered network connection, 1 GB of data usage for the Hotspot network connection, and an unlimited amount of data usage for the Wi-Fi network connection.
(57) The user interface 602 in
(58) Referring next to
(59) In
(60) Referring next to
(61) Referring next to
(62) Referring next to
(63) Additional Examples
(64) In an example scenario, the user 104 has several user computing devices associated with the same data usage plan. For example, the user 104 has a smartphone, a tablet, and a basic cellular telephone. In this example, the user 104 also has two subscriber identity module (SIM) cards or other user identity modules (e.g., two universal integrated circuit cards), each associated with a different data usage plan. Over time, the user 104 moves the SIM cards among the smartphone, tablet, and cellular telephone. After the user 104 installs one of the SIM cards in one of the devices, aspects of the disclosure execute on that device to detect the new SIM card and to communicate with the mobile operator 111 associated with the SIM card to obtain the schema 116 populated with the data usage plan associated with the SIM card. The user 104 is then able to view details of the data usage plan associated with that SIM card, such as the allotments per network connection 130 and remaining data consumption for the current billing cycle.
(65) In another example scenario, the computing device may share the populated schema 116, or portions thereof, with other devices upon demand or request. For example, the user 104 may tether the computing device to a friend's computing device (e.g., configure the computing device to be a wireless access point). The friend's computing device communicates with the user's computing device to obtain the schema 116 populated with the data usage plan. The friend is then able to view an amount of data consumption remaining under the data usage plan associated with the user 104 thus enabling the friend to decide whether, and how much, network data may be consumed.
(66) At least a portion of the functionality of the various elements in
(67) In some embodiments, the operations illustrated in
(68) The term roaming as used herein refers, in some embodiments, to connectivity provided outside a subscriber's home zone that may be subject to additional tariffs, fees, or constraints. Roaming service may or may not be provided by the same mobile operator 111. The term tethered as used herein refers, in some embodiments, to situations where one device acts as an access point for another device for network access. A tethered connection may occur over a wired connection or a wireless connection. The term Wi-Fi as used herein refers, in some embodiments, to a wireless local area network using high frequency radio signals for the transmission of data. The term BLUETOOTH as used herein refers, in some embodiments, to a wireless technology standard for exchanging data over short distances using short wavelength radio transmission. The term cellular as used herein refers, in some embodiments, to a wireless communication system using short-range radio stations that, when joined together, enable the transmission of data over a wide geographic area. The term NFC as used herein refers, in some embodiments, to a short-range high frequency wireless communication technology for the exchange of data over short distances.
(69) Embodiments have been described with reference to data monitored and/or collected from users 104. In some embodiments, notice may be provided to the users 104 of the collection of the data (e.g., via a dialog box or preference setting) and users 104 are given the opportunity to give or deny consent for the monitoring and/or collection. The consent may take the form of opt-in consent or opt-out consent.
(70) Exemplary Operating Environment
(71) Exemplary computer readable media include flash memory drives, digital versatile discs (DVDs), compact discs (CDs), floppy disks, and tape cassettes. By way of example and not limitation, computer readable media comprise computer storage media and communication media. Computer storage media include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media are tangible and are mutually exclusive to communication media. In some embodiments, computer storage media are implemented in hardware. Exemplary computer storage media include hard disks, flash drives, and other solid-state memory. In contrast, communication media typically embody computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information delivery media.
(72) Although described in connection with an exemplary computing system environment, embodiments of the disclosure are capable of implementation with numerous other general purpose or special purpose computing system environments, configurations, or devices.
(73) Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with aspects of the invention include, but are not limited to, mobile computing devices, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, gaming consoles, microprocessor-based systems, set top boxes, programmable consumer electronics, mobile telephones, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. Such systems or devices may accept input from the user 104 in any way, including from input devices such as a keyboard or pointing device, via gesture input, and/or via voice input.
(74) Embodiments of the invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. The computer-executable instructions may be organized into one or more computer-executable components or modules. Generally, program modules include, but are not limited to, routines, programs, objects, components, and data structures that perform particular tasks or implement particular abstract data types. Aspects of the invention may be implemented with any number and organization of such components or modules. For example, aspects of the invention are not limited to the specific computer-executable instructions or the specific components or modules illustrated in the figures and described herein. Other embodiments of the invention may include different computer-executable instructions or components having more or less functionality than illustrated and described herein.
(75) Aspects of the invention transform a general-purpose computer into a special-purpose computing device when configured to execute the instructions described herein.
(76) The embodiments illustrated and described herein as well as embodiments not specifically described herein but within the scope of aspects of the invention constitute exemplary means for collecting and reconciling the first data usage statistics 120 (e.g., as collected by the user computing devices) and the second data usage statistics 132 (e.g., as collected by the mobile operators 111), and exemplary means for synchronizing the first data usage statistics 120 with the second data usage statistics 132.
(77) The order of execution or performance of the operations in embodiments of the invention illustrated and described herein is not essential, unless otherwise specified. That is, the operations may be performed in any order, unless otherwise specified, and embodiments of the invention may include additional or fewer operations than those disclosed herein. For example, it is contemplated that executing or performing a particular operation before, contemporaneously with, or after another operation is within the scope of aspects of the invention.
(78) When introducing elements of aspects of the invention or the embodiments thereof, the articles a, an, the, and said are intended to mean that there are one or more of the elements. The terms comprising, including, and having are intended to be inclusive and mean that there may be additional elements other than the listed elements. The term exemplary is intended to mean an example of The phrase one or more of the following: A, B, and C means at least one of A and/or at least one of B and/or at least one of C.
(79) Having described aspects of the invention in detail, it will be apparent that modifications and variations are possible without departing from the scope of aspects of the invention as defined in the appended claims. As various changes could be made in the above constructions, products, and methods without departing from the scope of aspects of the invention, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted as illustrative and not in a limiting sense.
Appendix A
(80) Listed below are exemplary schema portions that are operable in aspects of the disclosure. While written in extensible markup language (XML) format, the schema may be implemented in other formats.
(81) TABLE-US-00001 <?xml version=1.0 encoding=UTF-8?> <xs:schema xmlns:xs=Base/v1 elementFormDefault=qualified targetNamespace=CarrierControl/Base/v1> <!-- Basic types --> <xs:simpleType name=NameType> <xs:restriction base=xs:normalizedString> <xs:minLength value=1/> <xs:maxLength value=255/> <xs:whiteSpace value=collapse/> </xs:restriction> </xs:simpleType> <xs:simpleType name=Priority> <xs:restriction base=xs:nonNegativeInteger> <xs:maxExclusive value=10/> </xs:restriction> </xs:simpleType> <xs:simpleType name=GUID> <xs:annotation> <xs:documentation xml:lang=en> The representation of a GUID, generally the id of an element. </xs:documentation> </xs:annotation> <xs:restriction base=xs:token> <xs:pattern value=\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a- fA-F0-9]{4}-[a-fA-F0-9]{12}\}/> </xs:restriction> </xs:simpleType> <xs:simpleType name=SubscriberType> <xs:restriction base=xs:token> <xs:maxLength value=20/> <xs:pattern value=\w+/> </xs:restriction> </xs:simpleType> <xs:complexType name=CertificateDetails> <xs:annotation> <xs:documentation> Used to identify a certificate or set of certificates. SubjectName is compared against the DN provided as the certificate's Subject field, or against any Name provided in the SubjectAlternativeName extentions of type DirectoryName. IssuerName is compared against the DN provided as the certificate's Issuer field, or against any Name provided in the IssuerAlternativeName extentions of type DirectoryName. </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name=SubjectName type=xs:string/> <xs:element name=IssuerName type=xs:string/> </xs:sequence> </xs:complexType> <!-- Alias definitions --> <xs:element name=AliasList> <xs:complexType> <xs:sequence> <xs:element maxOccurs=unbounded ref=AliasDefinition/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name=AliasDefinitionBaseType> <xs:attribute name=Name type=xs:string/> </xs:complexType> <xs:element name=AliasDefinition type=AliasDefinitionBaseType abstract=true/> <!-- Locations --> <xs:simpleType name=ProviderNameType> <xs:restrictionbase=xs:normalizedString> <xs:minLength value=1/> <xs:maxLength value=20/> <xs:whiteSpace value=collapse/> </xs:restriction> </xs:simpleType> <xs:simpleType name=ProviderIdType> <xs:restriction base=xs:token> <xs:pattern value=\d{1,6}/> </xs:restriction> </xs:simpleType> <xs:complexType name=ProviderType> <xs:sequence> <xs:element name=ProviderID type=ProviderIdType/> <xs:element name=ProviderName type=ProviderNameType/> </xs:sequence> </xs:complexType> <xs:complexType name=LocationType> <xs:choice maxOccurs=unbounded> <xs:element name=Provider type=ProviderType/> <xs:element name=LocationAlias type=xs:string/> </xs:choice> <xs:attribute name=negate type=xs:boolean default=false/> </xs:complexType> <xs:element name=LocationAliasDefinition type=LocationAliasDefinitionType substitutionGroup=AliasDefinition/> <xs:complexType name=LocationAliasDefinitionType> <xs:complexContent> <xs:extension base=AliasDefinitionBaseType> <xs:sequence> <xs:element name=Location type=LocationType/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <!-- Times --> <xs:complexType name=TimeType> <xs:choice maxOccurs=unbounded> <xs:element name=TimePeriod type=TimePeriod/> <xs:element name=RecurringTimePeriod type=RecurringTimePeriod/> <xs:element name=TimeAlias type=xs:string/> </xs:choice> <xs:attribute name=negate type=xs:boolean default=false/> </xs:complexType> <xs:element name=TimeAliasDefinition type=TimeAliasDefinitionType substitutionGroup=AliasDefinition/> <xs:complexType name=TimeAliasDefinitionType> <xs:complexContent> <xs:extension base=AliasDefinitionBaseType> <xs:sequence> <xs:element name=Time type=TimeType maxOccurs=unbounded/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name=TimeOfWeek> <xs:annotation> <xs:documentation> Defines a time as an offset from the midnight preceding 12:00:01 AM Sunday (P0D) to the midnight following 11:59:59 PM Saturday (P7D). </xs:documentation> </xs:annotation> <xs:restriction base=xs:duration> <xs:minInclusive value=P0D/> <xs:maxInclusive value=P7D/> </xs:restriction> </xs:simpleType> <xs:complexType name=RecurringTimePeriod> <xs:annotation> <xs:documentation> Defines a period of time within the week as a start/end TimeOfWeek. If EndTime is less than StartTime, the period is interpreted as crossing Saturday night. </xs:documentation> </xs:annotation> <xs:attribute name=StartTime type=TimeOfWeek use=required/> <xs:attribute name=EndTime type=TimeOfWeek use=required/> </xs:complexType> <xs:complexType name=TimePeriod> <xs:annotation> <xs:documentation Defines a period of time as a start/end date and time. </xs:documentation> </xs:annotation> <xs:attribute name=StartTime type=xs:dateTime use=required/> <xs:attribute name=EndTime type=xs:dateTime use=required/> </xs:complexType> </xs:schema> <?xml version=1.0 encoding=UTF-8?> <xs:schema xmlns:base=Base/v1 elementFormDefault=qualified targetNamespace= CarrierControl/Plans/v1> <xs:import schemaLocation=Alias.xsd namespace=CarrierControl/Base/v1/> <!-- Plan Definition --> <xs:complexType name=BillingCycleType> <xs:attribute name=StartDate use=required type=xs:dateTime/> <xs:attribute name=Duration use=required> <xs:simpleType> <xs:restriction base=xs:duration> <xs:minExclusive value=PT0S/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name=Resets type=xs:boolean default=true/> </xs:complexType> <xs:simpleType name=CostStyleType> <xs:annotation> <xs:documentation> CostType expresses the incremental cost of a plan: - Unrestricted: There is no incremental cost for consumption on this plan - Fixed: Consumption goes against a quota which the user has purchased / agreed to purchase - Variable: The user will be billed for incremental usage on this plan </xs:documentation> </xs:annotation> <xs:restriction base=xs:string> <xs:enumeration value=Unrestricted/> <xs:enumeration value=Fixed/> <xs:enumeration value=Variable/> </xs:restriction> </xs:simpleType> <xs:element name=Plan> <xs:complexType> <xs:sequence> <xs:element minOccurs=0 ref=Description/> <xs:element minOccurs=0 ref=Usage/> </xs:sequence> <xs:attribute name=Name use=required type=xs:string/> </xs:complexType> </xs:element> <xs:element name=Description type=DescriptionBaseType abstract=true/> <xs:complexType name=DescriptionBaseType> <xs:sequence> <xs:element name=BillingCycle type=BillingCycleType minOccurs=0/> <xs:element name=Conditions minOccurs=0> <xs:complexType> <xs:all> <xs:element name=Location type=base:LocationType minOccurs=0/> <xs:element name=Time type=base:TimeType minOccurs=0/> <xs:element name=Direction default=inout minOccurs=0> <xs:simpleType> <xs:restriction base=xs:token> <xs:enumeration value=in/> <xs:enumeration value=out/> <xs:enumeration value=inout/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name=Destination minOccurs=0> <xs:complexType> <xs:annotation> <xs:documentation> PhoneNumber only applies to SMS/Voice plans; HostName only applies to data plans </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name=PhoneNumber minOccurs=0> <xs:simpleType> <xs:restriction base=xs:string> <xs:pattern value=(\+)?\d+/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name=HostName minOccurs=0> <xs:simpleType> <xs:restriction base=xs:anyURI/> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name=LimitedUsage minOccurs=0> <xs:annotation> <xs:documentation> For Fixed plans, provides details on the user's quota: - Limit: The amount of the quota (in minutes for Voice plans, megabytes for Data plans, and messages for SMS plans) - SharedPlan: Another plan name whose quota is also consumed by usage on this plan - FallbackPlan: Another plan name whose consumption begins when this quota is exhausted. If a Fallback Plan is not provided, the current plan goes into an Overage state. </xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name=Limit use=required type=xs:nonNegativeInteger/> <xs:attribute name=SharedPlan type=xs:string/> <xs:attribute name=FallbackPlan type=xs:string/> </xs:complexType> </xs:element> </xs:all> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name=CostStyle use=required type=CostStyleType/> </xs:complexType> <xs:complexType name=DataPlanDescriptionType> <xs:complexContent> <xs:extension base=DescriptionBaseType> <xs:sequence> <xs:element name=BandwidthInKbps type=xs:nonNegativeInteger minOccurs=0/> <xs:element name=MaxDownloadFileSizeInMegabytes type=xs:positiveInteger default=25 minOccurs=0/> <xs:element name=SecurityUpdatesExempt type=xs:boolean default=false minOccurs=0/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name=DataPlanDescription type=DataPlanDescriptionType substitutionGroup=Description/> <xs:complexType name=SmsPlanDescriptionType> <xs:complexContent> <xs:extension base=DescriptionBaseType/> </xs:complexContent> </xs:complexType> <xs:element name=SmsPlanDescription type=SmsPlanDescriptionType substitutionGroup=Description/> <xs:complexTypename=VoicePlanDescriptionType> <xs:complexContent> <xs:extension base=DescriptionBaseType/> </xs:complexContent> </xs:complexType> <xs:element name=VoicePlanDescription type=VoicePlanDescriptionType substitutionGroup=Description/> <xs:element name=Usage type=PlanUsageType/> <xs:complexType name=PlanUsageType> <xs:attribute name=PlanName use=required type=xs:string/> <xs:attribute name=OverLimit type=xs:boolean/> <xs:attribute name=Congested type=xs:boolean/> <xs:attribute name=CurrentUsage use=required type=xs:nonNegativeInteger/> <xs:attribute name=UsageTimestamp use=required type=xs:dateTime/> </xs:complexType> </xs:schema>