Mobile push notification

Systems and methods are described herein that provide a mobile push notification system that sends notifications to various types of mobile devices using a single cloud based interface. One example embodiment includes a registration logic configured to receive device data from a mobile device. A record of the device data is stored in a database. A token generator creates a registration token that identifies the mobile device. The registration logic is facilitates communication between the mobile device and a vendor service when the registration token is received from the mobile device.

BACKGROUND

Mobile devices such as handheld computing devices use an operating system (OS) to run various types of application software, commonly referred to as applications or apps. Applications are available through application distribution platforms, which are typically operated by the vendor of the OS such as APPLE, ANDROID, GOOGLE, WINDOWS. The user of the mobile device may subscribe to various types of information to be received by the applications as notifications. Applications receive notifications generated by a publisher associated with the application. The notifications can be received by periodically polling the publisher. Push notifications are initiated by the publisher and are sent immediately through an open connection.

The push notifications sent by the publisher are designed specifically for the OS of the mobile device. Thus, each application uses a separate notification interface for each mobile OS. Each application also has to register multiple security certificates with the different OS vendors. Therefore, if a publisher has ten applications, the publisher develops ten different interfaces and registers ten security certificates with each mobile OS vendor. This requires substantial infrastructure to generate multiple notifications and security certificates for each OS vendor as well as time, effort, and maintenance.

DETAILED DESCRIPTION

Systems and methods are described herein that provide a mobile push notification system that sends notifications to various types of mobile devices using a single cloud based interface. The push notification system isolates and identifies different OS vendors and their mobile applications so that the mobile device does not have to store information about each different OS and then create an interface depending on the OS being used. Instead, the cloud based interface stores information about each OS and the mobile device can access as little of the information as the mobile device needs to interface with a vendor service. Therefore, custom interfaces for each application on each different OS are not necessary. Instead, a simplified and unified notification interface for the mobile applications is provided.

A client that wishes to receive notifications from an application on a mobile device selects a setting that allows the application to use an open connection with the publisher to receive immediate notifications. To provide notifications, an application needs data about the mobile device including two pieces of information: what operating system is used by the mobile device and a security certificate for the operating system that verifies the identity of the mobile device. To simplify the processing of notification requests, mobile devices are registered in a central data store (e.g. cloud, database, memory) and identified by a registration token. A mobile device uses the registration token to determine what information stored in the cloud that the mobile will device need to enable push notifications. For example, the registration token is used to identify the appropriate security certificate. Security certificates for various OS vendors are centrally maintained and are used to initiate push notifications for applications on the mobile device.

For example, the client may use a sports related application to receive football scores updates in real-time. The mobile device sends a request to be registered for a push notification service. The push notification service receives and stores device data (e.g., the type of OS for the device) for the mobile device and performs a database lookup to determine if the mobile device has been previously registered. If the mobile device has not been registered, a registration token is created for the mobile device and stored in the database along with the device data. The registration token is sent to the mobile device for use in subscribing to notifications.

Once the mobile device has been registered, the registration token is used by the mobile device to subscribe to push notifications. For example, the registration logic receives the registration token from a mobile device and invokes an OS vendor service to send the push notifications for the football score application. Security certificates are centrally maintained for various vendor services (e.g., APPLE, ANDROID, GOOGLE, WINDOWS). The security certificate is an electronic document that uses a digital signature to bind a public key with an entity, such as a mobile device. The security certificate can be used to verify that a public key belongs to the identified mobile device. If the mobile device seeking push notification of football scores uses the ANDROID operating system, this information is recorded in the database and the security certificate associated with ANDROID is provided to the football score application when initiating push notifications for the mobile device. Conventionally, the application running on the mobile device had to store a security certificate for every vendor.

Accordingly, the cloud acts as a bridge between the mobile device and the vendor. In this manner, the football score application running on the mobile device does not have to maintain large infrastructure of data, such as security certificates, to receive push notifications. The infrastructure of data is stored with the push notification service in the cloud and mapped to the mobile device for use in receiving push notifications.

With reference toFIG. 1, one embodiment of a system100associated with mobile push notification is illustrated. The system100operates in a web based cloud110used for accessing registration and notification information. Web-based protocol handlers allow web-based logics, specifically a registration logic120and a feedback logic130, to operate online allowing device data to be harvested from any number of devices and stored in a central data store. The device data can be integrated and processed to allow the identified users to receive push notifications.

The registration logic120receives a registration request140. The registration request140is sent by a mobile device150. The registration request140includes device data to identify an individual user and the mobile device150. For example, the registration request140specifies a vendor service name, such as APPLE PUSH NOTIFICATION SERVICE, a target descriptor that specifies the operating system of the mobile device150, and the name of the application160as registered with a vendor service180.

The registration logic120may receive a registration request140in response to a triggering event (e.g., the mobile device150being set to receive push notifications) or the registration request140may be sent periodically (e.g., according to a schedule) by the mobile device150. Alternatively, the registration request140may be automatically sent when an application160that uses push notifications is downloaded to the mobile device150. The mobile device150accesses the cloud110via a web-based protocol. In one embodiment, the collection of device data is performed, via the web, without impacting the normal operation of the mobile device150.

Upon receiving the registration request140, the registration logic120determines whether the mobile device150has been previously registered. The registration logic120compares the device data of the mobile device150to device data corresponding to registered mobile devices to determine whether the mobile device was previously registered. In addition to determining if the mobile device150has been previously registered, it is determined whether the mobile device150has been deemed inactive.

The feedback logic130determines whether the mobile device150has been deemed inactive by accessing a list of devices that are deemed inactive and not to receive push notifications. A device is inactive if the user has elected to no longer receive push notifications. A device could also be deemed inactive if the vendor service180provides a de-activation date. The feedback logic130uses the device data in the registration request140to determine if the mobile device150has been deemed inactive.

If the registration logic120determines that the mobile device150has not been previously registered and the feedback logic130determines that the mobile device150is active, the registration logic120creates a registration token170for the mobile device150. The registration token170is a unique token that identifies the mobile device150and a specific user. The cloud110uses the registration token170to identify the mobile device150and the information necessary for the mobile device150to receive push notifications.

The registration logic120creates a response that includes the registration token170. The response may also include additional information (e.g., security certificate) needed to communicate with the vendor service180. Initially, the cloud110uses device data in the registration request140to determine what additional information to send in the created response. In later transactions, the registration logic120validates the registration token170and uses the registration token170to identify the additional information needed. Using the information in the registration token170, the registration logic120invokes the vendor service180for the mobile device150to send push notifications for the application160.

With reference toFIG. 2, one embodiment of a system200associated with mobile push notification is illustrated. The system200includes several of the same components illustrated inFIG. 1. These components function as described inFIG. 1. For example, the registration logic120receives a registration request140from a mobile device150. The registration logic120determines if the mobile device150was previously registered by looking for the device data in a database122. Based on the results of the database lookup, it is determined whether there are existing records for the device data of the mobile device150stored in the database122. If there is no record for the mobile device150in the database122, the mobile device has not been previously registered and the token generator127creates a registration token170.

The token generator127generates the registration token170using a registration token generation algorithm. In one example, the registration token170is a hex-encoded 24 byte sequence. The hex-encoded 24 byte sequence contains XOR-encrypted bit shuffled unique internal identifier and a message Authentication Code (MAC) signature. For security purposes, the token generator127creates registration tokens with a length and complexity that makes it impractical to compose a valid registration token without knowing the registration token generation algorithm. Furthermore, the registration token170is unknown to the user of the mobile device150.

Once the registration token170is sent to the mobile device150, a database record is generated and stored in the database122. The database record includes the registration token170. Alternatively, the record includes a registration identification number that is resolved from the registration token170. Using a registration identification number provides an additional security layer. The record also includes a message and a timestamp. The database122is maintained in the cloud and is accessible by the registration logic120. The records are accessed by the feedback logic to validate the registration token170, when the mobile device150enables push notifications. The records in the database122may also be accessed by the vendor service180through a push notification system190for the application160. The vendor service180requires security certificates issued by the vendor to secure the connection. The record for a mobile device indicates which security certificate is appropriate for the mobile device. In this manner, the appropriate security certificate can be identified from information in the record and retrieved from the database122, so that the mobile device does not have to maintain all possible security certificates.

Therefore, the information required to enable push notifications, such as security certificates are maintained in the cloud110and used by the registration logic120and feedback logic130to create a centralized infrastructure. Accordingly, mobile devices like150do not have to maintain all possible information such as multiple security certificates. Instead, the mobile device150is able to access only the information that the mobile device150needs to enable mobile push notifications.

FIG. 3illustrates one embodiment of a method300associated with mobile push notification. The method300is performed in a web based cloud used for accessing registration and notification information. At310, a registration request is received. The registration request includes device data to identify a mobile device. The device data may also include the identity of a user, the name of the vendor service, and a target descriptor that specifies the device's operating system. Upon receiving the registration request, a database is searched for a registration record for the mobile device. At330, it is determined whether there are existing records for the mobile device, meaning that the mobile device has been previously registered.

If the mobile device has not been previously registered, the method300proceeds to340. At340, a registration token is generated. The registration token is a unique token that identifies a particular mobile device. At350, a registration response including the registration token is sent to the mobile device. Once the registration token is sent to the mobile device, a database record is created at360. The database record includes information about the mobile device (e.g., identifying information, a target descriptor that specifies the operating system of the mobile device150, the name of the application160). Using the registration token, push notifications between the mobile device and the vendor service are coordinated at370. For example, communication between the mobile device and the vendor service are facilitated by accessing a security certificate based, at least in part, on the device data in the stored record for the mobile device.

If the database lookup determines at330that the mobile device has been previously registered, the method300proceeds to380to send an error message. The error message includes a code indicating an error while processing the registration request. The code may be a word, an alphanumeric code, or a numeric code. The error message further includes a sequence uniquely describing registration of the mobile device based at least in part on the vendor service and application. The error message also describes the error that caused registration of the mobile device to fail. The mobile device will be unable to receive push notifications because the mobile device has an invalid registration token. For example, a mobile device having an registration token that has expired is invalid and therefore, the mobile device will not receive push notifications.

With reference toFIG. 4, one embodiment of a method400associated with mobile push notification is illustrated. The method400includes similar steps as illustrated inFIG. 3, and functions in a similar manner. At410, a registration request is received. The registration request includes device data that may include a registration date. The registration date is used to confirm a date on which registration is to be deactivated. At420, the registration request is processed. If the registration request did not include a registration date, a registration date may be generated. The registration date is stored at430. The registration date may be stored in a database with information identifying the corresponding mobile device.

At440, a list of deactivation dates corresponding to registered mobile devices is received. The list of deactivation dates is received from a vendor feedback service through the cloud. The connection may be made in response to a triggering event (e.g., being prompted by the vendor feedback service), continually, or periodically (e.g., according to a schedule). The deactivation dates indicate the date on which registered mobile devices should stop receiving push notifications. At450, the list of de-activation dates is compared to the stored registration date for each mobile device.

If the registration date for a mobile device is older than the de-activation date provided by the vendor service, the end-date of the registration record for the mobile device is updated at460. Consequently, the corresponding mobile device will be unable to receive push notifications. In one embodiment, the registration token of a mobile device having a registration date older than the deactivation date is invalidated to stop the mobile device from receiving push notifications. If the registration date is not older than the de-activation date provided by the vendor service, the registration record is maintained at470. Thus, the system can determine when to cease sending push notifications.

FIG. 5illustrates an example computing device in which example systems and methods described herein, and equivalents, may operate. The example computing device may be a computer500that includes a processor502, a memory504, and input/output ports510operably connected by a bus508. In one example, the computer500may include a registration logic530and a feedback logic540that are configured to operate online allowing device data to be harvested from any number of devices and identify specific users. In different examples, the registration logic530and the feedback logic540may be implemented in hardware, a non-transitory computer-readable medium with stored instructions, firmware, and/or combinations thereof. While the registration logic530and the feedback logic540are illustrated as a hardware component attached to the bus508, it is to be appreciated that in one example, the registration logic530and the feedback logic540could be implemented in the processor502.

In one embodiment, the registration logic530and the feedback logic540are means (e.g., hardware, non-transitory computer-readable medium, firmware) for performing registration and determining if mobile devices have been deemed inactive. The means may be implemented, for example, as an ASIC programmed to perform registration and deactivation monitoring. The means may also be implemented as stored computer executable instructions that are presented to computer500as data516that are temporarily stored in memory504and then executed by processor502.

Generally describing an example configuration of the computer500, the processor502may be a variety of various processors including dual microprocessor and other multi-processor architectures. A memory504may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, ROM, PROM, and so on. Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.

A disk506may be operably connected to the computer500via, for example, an input/output interface (e.g., card, device)518and an input/output port510. The disk506may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on. Furthermore, the disk506may be a CD-ROM drive, a CD-R drive, a CD-RW drive, a DVD ROM, and so on. The memory504can store a process514and/or a data516, for example. The disk506and/or the memory504can store an operating system that controls and allocates resources of the computer500.

The bus508may be a single internal bus interconnect architecture and/or other bus or mesh architectures. While a single bus is illustrated, it is to be appreciated that the computer500may communicate with various devices, logics, and peripherals using other busses (e.g., PCIE,1394, USB, Ethernet). The bus508can be types including, for example, a memory bus, a memory controller, a peripheral bus, an external bus, a crossbar switch, and/or a local bus.

The computer500may interact with input/output devices via the i/o interfaces518and the input/output ports510. Input/output devices may be, for example, a keyboard, a microphone, a pointing and selection device, cameras, video cards, displays, the disk506, the network devices520, and so on. The input/output ports510may include, for example, serial ports, parallel ports, and USB ports.

The computer500can operate in a network environment and thus may be connected to the network devices520via the i/o interfaces518, and/or the i/o ports510. Through the network devices520, the computer500may interact with a network. Through the network, the computer500may be logically connected to remote computers. Networks with which the computer500may interact include, but are not limited to, a LAN, a WAN, and other networks.

In another embodiment, the described methods and/or their equivalents may be implemented with computer executable instructions. Thus, in one embodiment, a non-transitory computer-readable medium is configured with stored computer executable instructions that when executed by a machine (e.g., processor, computer, and so on) cause the machine (and/or associated components) to perform the methods ofFIGS. 3 and 4.

While for purposes of simplicity of explanation, the illustrated methodologies in the figures are shown and described as a series of blocks, it is to be appreciated that the methodologies are not limited by the order of the blocks, as some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be used to implement an example methodology. Blocks may be combined or separated into multiple components. Furthermore, additional and/or alternative methodologies can employ additional blocks that are not illustrated.

ASIC: application specific integrated circuit.

DVD: digital versatile disk and/or digital video disk.

“Computer component”, as used herein, refers to a computer-related entity (e.g., hardware, firmware, instructions in execution, combinations thereof). Computer components may include, for example, a process running on a processor, a processor, an object, an executable, a thread of execution, and a computer. A computer component(s) may reside within a process and/or thread. A computer component may be localized on one computer and/or may be distributed between multiple computers.

“Computer communication”, as used herein, refers to a communication between computing devices (e.g., computer, personal digital assistant, cellular telephone) and can be, for example, a network transfer, a file transfer, an applet transfer, an email, an HTTP transfer, and so on. A computer communication can occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a LAN, a WAN, a point-to-point system, a circuit switching system, a packet switching system, and so on.

In some examples, “database” is used to refer to a table. In other examples, “database” may be used to refer to a set of tables. In still other examples, “database” may refer to a set of data stores and methods for accessing and/or manipulating those data stores.

“Logic”, as used herein, includes but is not limited to hardware, firmware, a non-transitory computer readable medium that stores instructions, instructions in execution on a machine, and/or combinations of each to perform a function(s) or an action(s), and/or to cause a function or action from another logic, method, and/or system. Logic may include a microprocessor controlled by an algorithm, a discrete logic (e.g., ASIC), an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, and so on. Logic may include one or more gates, combinations of gates, or other circuit components. Where multiple logics are described, it may be possible to incorporate the multiple logics into one physical logic. Similarly, where a single logic is described, it may be possible to distribute that single logic between multiple physical logics.