# US 2017/0286194 A1 · Systems and methods for inter-app communications

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0286194 A1
- Document ID: US20170286194A1
- Status: Published application
- Kind: A1
- Application number: 15/474,886
- Filed: 2017-03-30
- Published: 2017-10-05
- Earliest claimed: 2016-03-31
- Assignees: DexCom, Inc.
- Applicants: DexCom, Inc.
- Inventors: Gary A. Morris; Scott M. Belliveau; Esteban Cabrera, JR.; Rian Draeger; Laura J. Dunn; Timothy Joseph Goldsmith; Hari Hampapuram; Christopher Robert Hannemann; Apurv Ullas Kamath; Katherine Yerre Koehler; Patrick Wile McBride; Michael Robert Mensinger; Francis William Pascual; Philip Mansiel Pellouchoud; Nicholas Polytaridis; Philip Thomas Pupa; Anna Leigh Davis; Kevin Shoemaker; Brian Christopher Smith; Benjamin Elrod West; Atiim Joseph Wiley
- Web page: https://patentgrep.com/patent/US20170286194A1

## CPC

- A61M 5/1723: {using feedback of body parameters, e.g. blood sugar or pressure}
- A61B 5/14532: {for measuring glucose, e.g. by tissue impedance measurement}
- A61B 5/4839: {combined with drug delivery}
- A61B 5/7405: {using sound}
- A61B 5/742: {using visual displays (displays for heart-related electrical signals, e.g. ECG, A61B5/339)}
- G06F 3/165: {Management of the audio stream, e.g. setting of volume, audio stream path}
- G06F 9/54: Interprogram communication
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 16/2228: {Indexing structures}
- G06F 16/955: using information identifiers, e.g. uniform resource locators [URL]
- G06F 21/606: {by securing the transmission between two devices or processes}
- G08B 21/0453: {worn on the body to detect health condition by physiological monitoring, e.g. electrocardiogram, temperature, breathing (detecting, measuring or recording for diagnostic purposes A61B5/00)}
- G08B 25/08: using communication transmission lines {(G08B13/19658, G08B21/0286, G08B25/016 take precedence)}
- G16H 10/60: for patient-specific data, e.g. for electronic patient records
- G16H 20/17: delivered via infusion or injection
- G16H 40/63: for local operation
- H04L 9/0637: {Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]}
- H04L 9/0822: {using key encryption key}
- H04L 9/0833: {involving conference or group key (network architectures or network communication protocols for key management in group communication in a packet data network H04L63/065)}
- H04L 9/0861: {Generation of secret information including derivation or calculation of cryptographic keys or passwords}
- H04L 9/0891: {Revocation or update of secret information, e.g. encryption key update or rekeying}
- H04L 9/14: using a plurality of keys or algorithms
- H04L 9/30: Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04M 1/72409: by interfacing with external accessories (hands-free H04M1/60)
- H04W 12/084: using delegated authorisation, e.g. open authorisation [OAuth] protocol
- A61M 2205/3584: using modem, internet or Bluetooth®
- A61M 2205/50: with microprocessors or computers
- A61M 2205/502: User interfaces, e.g. screens or keyboards
- A61M 2230/201: Glucose concentration
- H04L 2209/80: Wireless
- H04M 1/724095: {Worn on the wrist, hand or arm}
- H04M 1/72412: using two-way short-range wireless interfaces
- H04M 19/047: {Vibrating means for incoming calls}
- A61M: DEVICES FOR INTRODUCING MEDIA INTO, OR ONTO, THE BODY (introducing media into or onto the bodies of animals A61D7/00; means for inserting tampons A61F13/26; devices for administering food or medicines orally A61J; containers for collecting, storing or administering blood or medical fluids A61J1/05); DEVICES FOR TRANSDUCING BODY MEDIA OR FOR TAKING MEDIA FROM THE BODY (surgery A61B; chemical aspects of surgical articles A61L); DEVICES FOR PRODUCING OR ENDING SLEEP OR STUPOR {(Electrotherapy, e.g. producing anaesthesia by the use of alternating or intermittent currents A61N1/36021)}
- A61B: DIAGNOSIS; SURGERY; IDENTIFICATION (usefulness limited to only animals A61D)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G08B: SIGNALLING SYSTEMS, e.g. PERSONAL CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
- G16H: HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

Methods, devices and systems are disclosed for inter-app communications between software applications on a mobile communications device. In one aspect, a computer-readable medium on a mobile computing device comprising an inter-application communication data structure to facilitate transitioning and distributing data between software applications in a shared app group for an operating system of the mobile computing device includes a scheme field of the data structure providing a scheme id associated with a target software app to transition to from a source software app, wherein the scheme id is listed on a scheme list stored with the source software app; and a payload field of the data structure providing data and/or an identification where to access data in a shared file system accessible to the software applications in the shared app group, wherein the payload field is encrypted.

## Claims

### Claim 1

A method for initiating inter-application communication between software applications, comprising:
designating software apps to a shared app group for an operating system of a mobile computing device, the shared app group including a first software app and one or more preapproved software apps, the first software app stored on a computer-readable medium of the mobile computing device and comprising instructions executable by a processor of the mobile computing device;
establishing an inter-app data communication architecture on the mobile computing device to link the first software app and a second software app included among the preapproved software apps, wherein the inter-app data communication architecture includes a data structure including (i) a scheme field to identify a software app from a scheme list and (ii) a payload field that is encrypted and includes data and/or an identification of where to access data in a shared file system of the shared app group;
generating a public/private key pair for encryption and decryption of the payload field of the data structure by: providing a first public key for the first software app in a shared keychain of the shared app group, providing a first private key for the first software app in a first private keychain accessible to the first software app, providing a second public key for the second software app in the shared keychain, and providing a second private key for the second software app in a second private keychain accessible to the second software app; and
generating a database key for encryption of a shared database in the shared file system by producing a database key in the first private keychain accessible to the first software app, and creating an encrypted database key by encrypting a copy of the database key with the second public key, wherein the encrypted database key is stored in the shared keychain.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
displaying on a display of the mobile computing device a user interface of the first software app including a list of at least some of the preapproved software apps including the second software app on the scheme list;
receiving, at the first software app, a link instruction to establish the inter-app data communication architecture between the first software app and the second software app, wherein the link instruction is based on a user selection of the second software app from the list; and
creating a link between the first software app and the second software app based on the inter-app data communication architecture.

### Claim 3 (depends on 2)

The method of claim 2, wherein the user interface of the first software app includes an unlink button to allow the user to provide an unlink instruction to remove the inter-app data communication architecture between the first software app and the second software app, wherein the unlink instruction is generated responsive to a user selection of the unlink button.

### Claim 4 (depends on 2)

The method of claim 2, wherein the list of the at least some of the preapproved software apps includes software apps not installed on the mobile computing device; and the method further comprises:
receiving, at the first software app, a get instruction to obtain an uninstalled software app; and
generating a command to open an app page for the uninstalled software app on an app store application resident on the mobile computing device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the established inter-app data communication architecture provides permission to the second software app to read and write to data stored in the shared database using the encrypted database key.

### Claim 6 (depends on 1)

The method of claim 1, wherein the first software app is a continuous glucose monitoring (CGM) app associated with a CGM device, and the second software app is an insulin app associated with an insulin delivery device.

### Claim 7

A method for inter-application communication between software applications in a shared app group for an operating system of a mobile computing device, in which the software applications are stored on a computer-readable medium of the mobile computing device and each comprise their own instructions executable by a processor of the mobile computing device, the method comprising:
operating a first software app in a foreground on the mobile computing device;
generating a data structure to initiate a transition from the first software app to a second software app in the foreground, the generating including (i) populating a scheme field of the data structure with a scheme id associated with the second software app from a scheme list stored with the first software app, (ii) populating a payload field of the data structure with data and/or an identification where to access data in a shared file system accessible to the software applications in the shared app group, and (iii) encrypting at least the payload field of the data structure;
providing the data structure to cause initiation of the second software app to the foreground; and
providing at least the encrypted payload field of the data structure for the second software app.

### Claim 8 (depends on 7)

The method of claim 7, wherein the encrypting the payload field of the data structure includes using a public/private key pair for encryption and decryption of the payload field, and wherein the public/private key pair includes a first public key for the first software app stored in a shared keychain of the shared app group, a first private key for the first software app in a first private keychain accessible to the first software app, a second public key for the second software app in the shared keychain, and a second private key for the second software app in a second private keychain accessible to the second software app.

### Claim 9 (depends on 7)

The method of claim 7, wherein the data structure is provided to the operating system as a command to initiate the second software app to the foreground.

### Claim 10 (depends on 9)

The method of claim 9, further comprising, upon initiation of the second software app to the foreground, relegating the first software app to the background or closing the first software app.

### Claim 11 (depends on 7)

The method of claim 7, wherein the providing the at least the encrypted payload field includes providing a copy of the data structure.

### Claim 12 (depends on 7)

The method of claim 7, wherein the shared file system includes an encrypted shared database accessible to the first software app using a master database key in a first private keychain accessible to the first software app and accessible to the second software app using an asymmetric encrypted database key in a shared keychain of the shared app group.

### Claim 13 (depends on 12)

The method of claim 12, wherein the asymmetric encrypted database key is created by encrypting a copy of the master database key using a second public key for the second software app in the shared keychain, and is decrypted using a second private key for the second software app in a second private keychain accessible to the second software app.

### Claim 14 (depends on 7)

The method of claim 7, further comprising:
displaying on a display of the mobile computing device a user interface of the first software app including an icon representing the second software app or data associated with the second software app; and
receiving, at the first software app, a transition instruction to cause the providing the data structure to cause the initiation of the second software app and the providing at least the encrypted payload field for the second software app, wherein the transition instruction is based on a user selection of the icon on the user interface.

### Claim 15 (depends on 7)

The method of claim 7, wherein the first software app is a continuous glucose monitoring (CGM) app associated with a CGM device, and the second software app is an insulin app associated with an insulin delivery device.

### Claim 16

A method for facilitating inter-app communications between software applications, comprising:
receiving, by a first software app on a mobile computing device, the first software app being a continuous glucose monitoring (CGM app) associated with a CGM device, a first instruction to transition from the first software app to a second software app on the mobile computing device, the second software app being an insulin app associated with an insulin delivery device;
generating a data structure to initiate the transition and provide a data payload to the second software app, the data payload constituting at least data about a glucose concentration level or an insulin dosage; and
providing, by the first software app, the data structure to cause initiation of the second software app in a foreground mode of the mobile computing device.

### Claim 17 (depends on 16)

The method of claim 16, comprising:
generating, by the first software app, the first instruction based on a user selection of an identifier of the second software app presented on a display screen of the first software app.

### Claim 18 (depends on 16)

The method of claim 16, wherein the generating includes (i) populating a first field of the data structure with a scheme id associated with the second software app, (ii) populating a second field of the data structure with the data payload, and (iii) encrypting at least the second field of the data structure.

### Claim 19 (depends on 18)

The method of claim 18, wherein the scheme id is listed on a predetermined scheme list stored with the first software app.

### Claim 20 (depends on 16)

The method of claim 16, wherein the data payload includes at least one of data or an identification where to access data in a shared file system accessible among at least the first and the second software apps.

### Claim 21 (depends on 16)

The method of claim 16, wherein the encrypting the second field of the data structure includes using a public/private key pair for encryption and decryption of the payload data, and wherein the public/private key pair includes a first public key for the first software app stored in a shared keychain among at least the first and second software apps, a first private key for the first software app in a first private keychain accessible to the first software app, a second public key for the second software app in the shared keychain, and a second private key for the second software app in a second private keychain accessible to the second software app.

### Claim 22 (depends on 16)

The method of claim 16, wherein the data structure is provided to an operating system of the mobile computing device as a command to initiate the second software app to the foreground.

### Claim 23 (depends on 16)

The method of claim 16, further comprising:
providing, by the first software app, data to an encrypted shared database accessible with reading and writing data privileges to the first software app and the second software app based on one or more encryption keys, wherein the encrypted shared database is in a shared file system able to be accessed among at least the first and the second software apps, and the data in the encrypted shared database is available to only software applications with the one or more encryption keys.

### Claim 24 (depends on 23)

The method of claim 23, wherein at least one encryption key is based on a master database key stored in a first private keychain accessible to the first software app or includes an asymmetric encrypted database key by encrypting a copy of the master database key using a second public key for the second software app in the shared keychain.
