Patent Description:
Telephone-based communication applications (apps) often allow one user to invite another user to use the application, but require manual registration by the user to participate. Typically, a user (the inviter) sends an invitation to the potential user based on a known identity of the potential user (e.g., an e-mail address) or based on a known feature associated with a user device of the potential user (e.g., a mobile phone number). The potential user may receive the invitation through a general communication method, such as e-mail or text message. To respond to the invitation, the potential user may first need to download, install, and initialize the communication app. The invitation may also contain a verification code. After initializing the communication app, the potential user may be required to transfer the verification code to the communication app to accept the invitation, e.g. by copying the verification code from the text message and pasting it into an input field provided by the initialized communication app or by manually transcribing the verification code into the communication app. After the potential user successfully accepts the invitation, the inviter and potential user may be able to communicate via the communication app.

One aspect of the disclosure provides a method for generating a message that allows for automatic verification of a feature of a user device. The method includes receiving, at data processing hardware, a request to launch an application on a user device. The request includes a unique feature associated with the user device and the unique feature is required for registering the user device with the application. The method also includes generating, by the data processing hardware, a selectable-link for launching the application on the user device. The selectable-link includes an application identifier identifying the application and a verification code used to verify that the unique feature is associated with the user device. The method further includes transmitting, at the data processing hardware, a first message that includes the selectable-link to the user device using the unique feature. The first message, when received by the user device, is configured to cause the user device to display the selectable-link on a graphical user interface executing on the user device. The first message is also configured to launch the application using the application identifier after receiving a selection indication indicating selection of the selectable-link displayed on the graphical user interface and transmit a verification code. The verification code is transmitted to the data processing hardware in response to the user device receiving confirmation to register the user device with the application. The method also includes registering, by the data processing hardware, the user device with the application in response to receiving the verification code from the user device.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the first message, when received by the user device, is further configured to cause the user device to display a confirmation button in the graphical user interface after launching the application. The confirmation button, when selected by a user of the user device, indicates confirmation by the user to register the user device with the application and causes the user device to transmit the verification code to the data processing hardware without requiring user input of the verification code. In some examples, registering the user device with the application when the verification code is received from the user device includes determining whether a period of time from when the first message is transmitted to the user device until the verification code is received from the user device satisfies a validity period threshold. When the period of time satisfies the validity period threshold, the method includes registering the user device with the application. Alternatively, when the period of time dissatisfies the validity period threshold, the method includes preventing registration of the user device with the application.

The method may also include, when the period of time dissatisfies the validity period threshold, transmitting a second message to the user device using the unique feature. The second message includes a new verification code used to verify that the unique feature is associated with the user device. Optionally, the selectable-link includes a deep link that, when selected, prompts the user device to install the application when the application is not already installed on the user device and/or open the application when the application is already installed on the user device. In some embodiments, the first message, when received by the user device, is further configured to, after launching the application, populate the application with the unique feature associated with the user device. The unique feature may include a phone number. In some examples, the method further includes, after registering the user device with the application, transmitting a second message to the user device. The second message, when received by the user device, is configured to cause the user device to notify a user of the user device that the user device is successfully registered with the application.

Another aspect of the disclosure provides a method that includes receiving, at data processing hardware of a user device, a first message that includes a selectable-link for verifying a telephone number associated with the user device. The selectable-link includes metadata corresponding to the telephone number and a verification code used to verify that the telephone number is associated with the user device. The method also includes displaying, by the data processing hardware, the selectable-link in a graphical user interface executing on the user device and receiving, at the data processing hardware, a selection indication indicating selection of the selectable-link displayed on the graphical user interface. After receiving the selection indication, the method includes transmitting, by the data processing hardware, the verification code over a network to a service in communication with the data processing hardware. The verification code is configured to, in response to the service receiving the verification code, cause the service to verify that the telephone number is associated with the user device.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the selectable-link further includes an application identifier identifying an application that requires the telephone number associated with the user device for registering the user device with the application. The method then further includes, in response to receiving the selection indication, launching, by the data processing hardware, the application on the user device using the application identifier and populating, by the data processing hardware, the application with the telephone number associated with the user device. After receiving the selection indication indicating selection of the selectable-link, the method may include displaying, by the data processing hardware, a confirmation button on the graphical user interface and receiving, at the data processing hardware, a second selection indication indicating selection of the confirmation button to verify that the telephone number is associated with the user device. In response to receiving the second selection indication, the method then includes automatically transmitting, by the data processing hardware, the verification code to the service without requiring user input of the verification code.

In some examples, the method includes, prior to receiving the first message, transmitting, by the data processing hardware, a request to the service requesting to launch an application on the user device and/or access a resource. The request includes the telephone number associated with the user device and the service uses the telephone number received by the request to transmit the first message to the user device.

Another aspect of the disclosure provides a system including data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instruction that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include receiving a request to launch an application on a user device. The request includes a unique feature associated with the user device and the unique feature is required for registering the user device with the application. The operations also include generating a selectable-link for launching the application on the user device. The selectable-link includes an application identifier identifying the application and a verification code used to verify that the unique feature is associated with the user device. The operations further include transmitting a first message that includes the selectable-link to the user device using the unique feature. The first message, when received by the user device, is configured to cause the user device to display the selectable-link on a graphical user interface executing on the user device. The first message is also configured to launch the application using the application identifier after receiving a selection indication indicating selection of the selectable-link displayed on the graphical user interface and transmit a verification code. The verification code is associated with the verification code and is transmitted to the data processing hardware in response to the user device receiving confirmation to register the user device with the application. The operations also include registering the user device with the application in response to receiving the verification code from the user device.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the first message, when received by the user device, is further configured to cause the user device to display a confirmation button in the graphical user interface after launching the application. The confirmation button, when selected by a user of the user device, indicates confirmation by the user to register the user device with the application and causes the user device to transmit the verification code to the data processing hardware without requiring user input of the verification code. In some examples, registering the user device with the application when the verification code is received from the user device includes determining whether a period of time from when the first message is transmitted to the user device until the verification code is received from the user device satisfies a validity period threshold. When the period of time satisfies the validity period threshold, the operations include registering the user device with the application. Alternatively, when the period of time dissatisfies the validity period threshold, the operations include preventing registration of the user device with the application.

The operations may also include, when the period of time dissatisfies the validity period threshold, transmitting a second message to the user device using the unique feature. The second message includes a new verification code used to verify that the unique feature is associated with the user device. Optionally, the selectable-link includes a deep link that, when selected, prompts the user device to install the application when the application is not already installed on the user device and/or open the application when the application is already installed on the user device. In some embodiments, the first message, when received by the user device, is further configured to, after launching the application, populate the application with the unique feature associated with the user device. The unique feature may include a phone number. In some examples, the operations further include, after registering the user device with the application, transmitting a second message to the user device. The second message, when received by the user device, is configured to cause the user device to notify a user of the user device that the user device is successfully registered with the application.

Another aspect of the disclosure provides a system including data processing hardware of a user device and memory hardware in communication with the data processing hardware. The memory hardware stores instruction that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include receiving a first message that includes a selectable-link for verifying a telephone number associated with the user device. The selectable-link includes metadata corresponding to the telephone number and a verification code used to verify that the telephone number is associated with the user device. The operations also include displaying the selectable-link in a graphical user interface executing on the user device and receiving a selection indication indicating selection of the selectable-link displayed on the graphical user interface. After receiving the selection indication, the operations include transmitting the verification code over a network to a service in communication with the data processing hardware. The verification code is configured to, in response to the service receiving the verification code, cause the service to verify that the telephone number is associated with the user device.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the selectable-link further includes an application identifier identifying an application that requires the telephone number associated with the user device for registering the user device with the application. The operations then further include, in response to receiving the selection indication, launching the application on the user device using the application identifier and populating the application with the telephone number associated with the user device. After receiving the selection indication indicating selection of the selectable-link, the operations may include displaying a confirmation button on the graphical user interface and receiving a second selection indication indicating selection of the confirmation button to verify that the telephone number is associated with the user device. In response to receiving the second selection indication, the operations then include automatically transmitting the verification code to the service without requiring user input of the verification code.

In some examples, the operations include, prior to receiving the first message, transmitting a request to the service requesting to launch an application on the user device and/or access a resource. The request includes the telephone number associated with the user device and the service uses the telephone number received by the request to transmit the first message to the user device.

Telephone-based communication applications (apps) generally require a current user to invite a potential user to participate. This is exemplified by <CIT>. Typically, an inviter (e.g., a current user of the application) sends an invitation to a potential user based on a known identity of the potential user or based on a known feature associated with the potential user (e.g., a mobile phone number, email address, username, etc.). After the potential user receives the invitation on a user device and accepts the invitation, the application verifies ownership or control of the feature of the user device (e.g., the phone number of the user device). Generally, the application (or a service associated with the application) will send a message, for example through Short Message Service (SMS), containing a verification code to the user device. To verify the known identity or the known feature, the potential user must undertake the inefficient process of opening the message, obtaining the verification code, installing (if not previously installed) and executing the application, and providing the verification code (e.g., via manual entry or copy and pasting). This steps are described by the system and methods taught by <CIT>, whereby in a system comprising an access controller where data is stored, an administrator device and at least one invitee devices, whereby invitation may be sent from the administrator device, preferably via an access controller. The invitation may be in the form a message such as an email or SMS message and/or it could be sent and viewable via a messaging system within a data access application. When the invited user opens or logs into this application, they may see that an invitation has been received to access certain data. The user may then access the data stored or maintained by the access controller. The invitation may include a OTP (one-time-password), for example a OTP which the user may enter in a web browser in order to access the data via the web browser or via a dedicated access application. Implementations of the present disclosure solve these technical inefficiencies by generating a message with sufficient information to allow the user device to automate several of the aforementioned steps.

Implementations herein are directed toward a feature verifier configured to generate a message that allows for automatic verification of a feature (e.g., a phone number) of a user device. Referring to <FIG>, in some implementations, an example system <NUM> includes one or more user devices <NUM>, <NUM> associated with an inviter <NUM> and a user <NUM> and in communication with a remote system <NUM> via a network <NUM>. User devices <NUM>, <NUM> include mobile devices such as smart phones, tablets, smart watches. The remote system <NUM> may be a single computer, multiple computers, or a distributed system (e.g., a cloud environment) having scalable / elastic computing resources <NUM> (e.g., data processing hardware) and/or storage resources <NUM> (e.g., memory hardware). The network <NUM> may be a global communications network, such as the Internet. While <FIG> illustrates the user devices <NUM>, <NUM> communicating via the same network <NUM>, the user devices <NUM>, <NUM> may communicate with the remote system <NUM> via different networks. In some examples, the network is a telephone network supporting SMS, Multimedia Messaging Service (MMS), Universal Profile for Rich Communication Services (RCS or 'Chat'), or any other suitable communication protocol. In some examples, an inviter <NUM> desires to communicate with a user <NUM> via a phone-based communication application (app). The communication app may be used to communicate by speech, text, photo file sharing, or other forms of communication. In the example shown, the inviter <NUM> invites the user <NUM> to communicate using a mobile application <NUM> that executes on the user device <NUM>. For instance, the user device <NUM> of the inviter <NUM> may invite the user <NUM> to communicate using the mobile application <NUM> by sending to the remote system <NUM> a registration request <NUM> that invites the user <NUM> to at least one of register or launch the mobile application <NUM> on the user device <NUM> associated with the user <NUM> to facilitate communications with the inviter <NUM>. In some examples, a service <NUM> associated with the application <NUM> receives the registration request <NUM> from the user device <NUM> associated with the inviter <NUM> and sends the registration request <NUM> to a feature verifier <NUM> executing on the remote system <NUM>. In some examples, the service <NUM> associated with the application <NUM> executes on the remote system <NUM> and implements the feature verifier <NUM>.

In the example shown, the remote system <NUM> executes the feature verifier <NUM> that receives the registration request <NUM> from the inviter <NUM>. The feature verifier <NUM> may implement a message generator <NUM> and a validator <NUM>. The message generator <NUM> is configured to processes the registration request <NUM> received from the user device <NUM> or another device associated with the inviter <NUM>, such as a desktop computer, laptop computer, tablet, or other computing device.

As described in more detail below, the message generator <NUM> produces a verification message <NUM> based on the registration request <NUM>. The remote system <NUM> sends the verification message <NUM> to the user device <NUM> of the user <NUM>. The verification message <NUM> includes a selectable-link <NUM>. In the example shown, the user device <NUM> executes a graphical user interface <NUM> that displays the selectable-link <NUM> on a screen <NUM> of the user device <NUM> in response to receiving the verification message <NUM>. The user device <NUM> may receive a selection indication indicating selection of the selectable-link <NUM> (e.g., via an input by the user <NUM>) to install, launch, and/or register the application <NUM> (as described in more detail below). In some examples, the feature verifier <NUM> receives a confirmation message <NUM> from the user device <NUM> after the user device <NUM> receives the verification message <NUM>. Here, the validator <NUM> of the feature verifier <NUM> is configured to process the confirmation message <NUM> and generate a registration notification <NUM> based on the confirmation message <NUM>. In some examples, the validator <NUM> registers the user <NUM> with the online service <NUM> associated with the mobile application <NUM>. The remote system <NUM> then sends the verification notification <NUM> to the user device <NUM> of the user <NUM> to notify the user <NUM> that the user device <NUM> and/or the associated unique feature <NUM> (<FIG>) is successfully registered with the mobile application <NUM> and/or the associated service <NUM>. For instance, the service <NUM> may be a communication service that allows two or more user devices <NUM>, <NUM> to use the mobile application <NUM> to communicate with each other via telephony or messaging (e.g., voice or text) when the mobile application <NUM> is installed on, and registered with, the corresponding user devices <NUM>, <NUM>. The remote system <NUM> may also notify the inviter <NUM> (or any other users) of successful registration.

The registration request <NUM> may also come from other users, including from the user <NUM>, e.g., for two-factor authentication. For example, the user <NUM> may request access to a resource or application <NUM> (e.g., a banking application) on user device <NUM> that requires verification of the user's <NUM> possession of the user device <NUM> as verification in addition to, for example, a username and password. In this example, the user <NUM> may request access to the resource or application <NUM> and in turn, the remote system <NUM> may receive the request (in this case a request for authentication) from the user device <NUM> or an affiliated service <NUM>. The remote system <NUM> may then generate a verification message <NUM> to transmit to the user device <NUM> that includes the selectable-link <NUM>. The user <NUM> may then indicate selection of the selectable-link <NUM> to verify possession of the user device <NUM>. The message <NUM> may be configured to supply a verification code <NUM> (<FIG>) to the requesting application <NUM> (i.e., the banking application) along with other potentially relevant information (e.g., username) without requiring the user <NUM> to enter the information.

<FIG> shows a schematic view <NUM> of the message generator <NUM>. The message generator <NUM> receives the registration request <NUM> from, for example, the user device <NUM> of the inviter <NUM> through the application <NUM> executing on the user device <NUM>. The registration request <NUM> includes a unique feature <NUM> that is associated with the user device <NUM> of the user <NUM>. The unique feature <NUM> is required for registering the user device <NUM> with the application <NUM> and/or using the application <NUM> (e.g., the unique feature <NUM> may verify ownership or control of the user device <NUM>). In some examples, the unique feature <NUM> is a phone number <NUM> (<FIG>) associated with the user device <NUM>. Alternatively, the unique feature <NUM> is an email address, user name, media access control (MAC) address, or some other feature/identifier associated with the user device <NUM>. In response to receiving the registration request <NUM>, the message generator <NUM> generates a verification message <NUM>. The verification message <NUM> includes an application identification (ID) <NUM> that identifies the mobile application <NUM> that is requesting registration with the user device <NUM>. In some examples, the application ID <NUM> is a unique name or number associated with the app <NUM> and is obtained by the message generator <NUM> through an online application repository <NUM> (<FIG>). However, other forms of application ID <NUM> are possible. The verification message <NUM> also includes metadata <NUM> associated with the unique feature <NUM> of the user device <NUM> and a verification code <NUM>. The metadata <NUM> associated with the feature <NUM> may be used, for example, to launch and/or initialize the application <NUM> for execution on the user device <NUM>. The verification code <NUM>, as described in more detail below, may be a combination of letters, symbols, and/or numbers that is uniquely associated with the verification message <NUM>. Optionally, the verification message <NUM> may further include a validity period <NUM> that is used to establish an expiry of the message <NUM>, such that the verification code <NUM> is invalid at the expiration of the validity period <NUM>. In some examples, the verification message <NUM> includes a token that indicates the validity period <NUM> of the verification code <NUM>.

In some implementations, the message generator <NUM> configures the verification message <NUM> to cause the user device <NUM> to display the verification message <NUM> as a selectable-link <NUM> (<FIG> and <FIG>) on the graphical user interface (GUI) <NUM> (<FIG>) that executes on the user device <NUM> for display on the screen <NUM> (<FIG>). When the GUI <NUM> receives a selection indication indicating selection of the selectable-link <NUM> displayed thereon, the verification message <NUM> is then configured to install (if not previously installed on the user device <NUM>) and launch the application <NUM> on the user device <NUM> using the application ID <NUM>. Once the application <NUM> is launched by the user device <NUM>, the GUI <NUM> executing on the user device <NUM> may display a confirmation notification (<NUM>) that requests/prompts the user <NUM> to consent to register the user device <NUM> with the application <NUM>. For instance, the GUI <NUM> may prompt the user <NUM> to select a button, provide a speech input, or some other user input that indicates that the user <NUM> consents to registering the user device <NUM> and/or the associated unique feature <NUM> with the application <NUM>. Thereafter, the user device <NUM> may transmit the confirmation message <NUM> (<FIG> and <FIG>) to the feature verifier <NUM> indicating that the user <NUM> consents to registering the user device <NUM> and/or the associated unique feature <NUM> with the application <NUM>. In some embodiments, registration may occur without requiring the user consent beyond indicating selection of the selectable-link <NUM> (i.e., the GUI <NUM> does not prompt the user <NUM> to provide additional confirmation).

Referring to <FIG>, in some implementations, a schematic view <NUM> shows the verification message <NUM> including a deep link (e.g., a Firebase Dynamic Link) that provides information (e.g., app ID <NUM>, metadata <NUM>, and verification code <NUM>) sufficient for allowing the user device <NUM> to automatically install and/or launch the application <NUM> and populate the necessary registration information for registering the unique feature <NUM> and/or the associated user device <NUM> with the application <NUM>. For example, the metadata <NUM> may include a country code <NUM> and phone number <NUM> associated with the user device <NUM>.

<FIG> shows a schematic view <NUM> of the validator <NUM> of the feature verifier <NUM> receiving a confirmation message <NUM> from the user device <NUM> and determining whether or not register the unique feature <NUM> and/or the user device <NUM> with the application <NUM> based on the received confirmation message <NUM>. The confirmation message <NUM> may be generated by, and sent from, the user device <NUM> after the user <NUM> of the user device <NUM> consents to register the unique feature <NUM> and/or the user device <NUM> with the application <NUM>. The confirmation message <NUM> confirms acceptance by the user <NUM> and/or the application <NUM> that the feature <NUM> associated with the user device <NUM> is verified and that the user <NUM> consents to register the unique feature <NUM> with the application <NUM>. For instance, the confirmation message <NUM> includes the verification code <NUM> (or a code associated with verification code <NUM>) generated by the message generator <NUM> and included in the verification message <NUM> previously sent to the user device <NUM>. Thus, in response to receiving the confirmation message <NUM>, the validator <NUM> is configured to first determine if the verification code <NUM> is valid (e.g., matches the verification code <NUM> provided in the verification message <NUM>) for verifying the unique feature <NUM>. Validity of the verification code <NUM> may further require that the verification code <NUM> has not previously been confirmed as used, i.e., to prevent reuse of the same verification code <NUM>. Optionally, the validator <NUM> may determine whether the validity period <NUM> associated with the verification code <NUM> is satisfied (e.g., unexpired). For example, the validator <NUM> may determine whether a period of time from when the message <NUM> is transmitted to the user device <NUM> to when the confirmation message <NUM> is received from the user device <NUM> satisfies the validity period <NUM>. For instance, the validity period <NUM> may be satisfied when the period of time is less than the validity period <NUM>. The period of time may simply include a designated time at which the verification code <NUM> must be received by the validator <NUM> before determining that the verification code <NUM> has expired. The confirmation message <NUM> may include a single token indicating the verification code <NUM> and the validity period <NUM> associated with the verification code <NUM>. In some examples, the validity period <NUM> is not included in the confirmation message <NUM> and the validator <NUM> obtains the validity period <NUM> by accessing a log that maps verification codes <NUM> (or other unique identifying features of the message <NUM>) to associated validity periods <NUM>. Upon determining that the verification code <NUM> received in the confirmation message <NUM> is valid and the validity period <NUM> (when applicable) associated with the verification code <NUM> is satisfied, the validator <NUM> may register the unique feature <NUM> and/or the user device <NUM> with the application <NUM> and/or the online service <NUM> associated with the application <NUM> (or provide the information necessary for another service to register the feature <NUM> and/or user device <NUM>). In the examples shown, the validator <NUM> of the feature verifier <NUM> generates and sends the registration notification <NUM> to the user device <NUM> to inform the user <NUM> that the unique feature <NUM> and/or the user device <NUM> was successfully registered with the application <NUM>. On the other hand, when the validator <NUM> determines that the validity period <NUM> for the verification code <NUM> has expired (e.g., unsatisfied) or that the verification code <NUM> has been previously used, the validator <NUM> prevents registration by the user device <NUM> with the application <NUM>. In some examples, when the period of time from when the message <NUM> is transmitted dissatisfies the validity period <NUM>, a second message is transmitted to the user device <NUM> using the unique feature <NUM>. The second message includes a new verification code <NUM> used to verify that the unique feature <NUM> is associated with the user device <NUM>. The validity period <NUM> may also be referred to as a validity period threshold <NUM>. After one or more failures to register (e.g., the validity period <NUM> is dissatisfied), the user <NUM> may be required to manually enter the new verification code <NUM> from the second (or subsequent) message.

Referring to the schematic view <NUM> of <FIG>, in some implementations, the system <NUM> includes the user device <NUM> in communication with the feature verifier <NUM> and an application repository <NUM>. The feature verifier <NUM> may execute on the remote system <NUM> and communicate with the user device <NUM> via the network <NUM>. In the example shown, the user device <NUM> may include the user device <NUM> associated with the user <NUM> of <FIG>. The example shows the user device <NUM> receiving the verification message <NUM> from the feature verifier <NUM> that is requesting verification to register the unique feature <NUM> associated with the user device <NUM> with the application <NUM>. The feature verifier <NUM> uses the unique feature <NUM> (e.g., telephone number) associated with the user device <NUM> to transmit (e.g., via a text message sent to the telephone number <NUM>) the verification message <NUM> to the user device <NUM>.

In response to receiving the verification message <NUM>, the user device <NUM> displays the verification message <NUM> on the GUI <NUM> as a selectable-link <NUM>, that when selected by the user <NUM>, causes the user device <NUM> to launch the application <NUM> identified by the application identifier <NUM> included in verification message <NUM>. In some examples, the user device <NUM> simply launches the application <NUM> in response to receiving the verification message <NUM> without requiring the user <NUM> select a selectable-link <NUM> corresponding to the verification message <NUM>. The user device <NUM> may execute a message handler <NUM> for processing the verification message <NUM> upon receipt. In scenarios when application <NUM> is not already installed on the user device <NUM>, the message handler <NUM> may (automatically or via user prompt) obtain (e.g., via download) the application <NUM> from, for example, the application repository <NUM> for installation on the user device <NUM>. After the application <NUM> launches, i.e., initiates execution on the user device <NUM>, the application <NUM> obtains registration information from the verification message <NUM> for registering the unique feature <NUM> (e.g., country code <NUM> and telephone number <NUM>) and/or the user device <NUM> with the application <NUM>. In some implementations, when user device <NUM> launches the application <NUM>, the application <NUM> displays a confirmation notification <NUM> on the GUI <NUM> displayed on the screen <NUM> of the user device <NUM> that allows the user <NUM> to confirm registration of the unique feature <NUM> and/or user device <NUM> with the application <NUM>. The confirmation notification <NUM> may include a graphical element (e.g., button) that the user <NUM> may select to confirm registration. Additionally or alternatively, the confirmation notification <NUM> may include a prompt (visual and/or audio) that prompts the user <NUM> to confirm registration by providing a manual input (e.g., tapping a graphical element on the GUI <NUM>, pressing a physical button on the user device <NUM>, performing a gesture on the GUI <NUM> or proximate to the user device <NUM>, providing a speech input, moving the user device <NUM> in a prescribed manner, etc.). The message handler <NUM> may implement a confirmation generator <NUM> configured to generate and transmit the confirmation message <NUM> to the remote system <NUM> in response to the user device <NUM> receiving the selection indication indicating confirmation by the user <NUM> to register the user device <NUM> and/or the associated unique feature <NUM> with the application <NUM>. As used herein, the selection indication received by the user device <NUM> causes the user device <NUM> to generate and send the confirmation message <NUM> to the validator <NUM> (<FIG>) that includes the verification code <NUM> for use in verifying and registering the unique feature <NUM> with the application <NUM>.

<FIG> is a flowchart of an example method <NUM> for generating a message <NUM> that allows for automatic verification of a feature <NUM> of a user device <NUM>. The flowchart starts at operation <NUM> by receiving, at data processing hardware <NUM> (<FIG>), a request <NUM> to launch an application <NUM> on a user device <NUM>. The request <NUM> includes the unique feature <NUM> associated with the user device <NUM> and the unique feature <NUM> is required for registration with the application <NUM> for use of the application <NUM> on the user device <NUM>. The unique feature <NUM> may include a phone number <NUM> and associated country code <NUM>. The unique feature <NUM> may optionally include a user name, email address, MAC address, or some other feature that uniquely identifies the user device <NUM>. The method <NUM> also includes, at operation <NUM>, generating, by the data processing hardware <NUM>, a selectable-link <NUM> configured to launch the application <NUM> on the user device <NUM>. The selectable-link <NUM> includes an application identifier <NUM> that identifies the application <NUM>. The selectable-link <NUM> also includes a verification code <NUM> used to verify that the unique feature <NUM> is associated with the user device <NUM>. The selectable-link <NUM> may include a deep link that, when selected, causes the user device <NUM> to install the application <NUM> when the application <NUM> is not already installed on the user device <NUM> and/or open the application <NUM> when the application <NUM> is already installed on the user device <NUM>. The verification message <NUM> may include the selectable-link <NUM>.

At operation <NUM>, the method <NUM> includes transmitting a first message (e.g., verification message) <NUM> that includes the selectable-link <NUM> to the user device <NUM> using the unique feature <NUM>. For instance, the unique feature <NUM> may be a phone number <NUM> associated with the user device <NUM> that the data processing hardware <NUM> uses to send the first message <NUM>. The first message is configured to cause the user device <NUM> to display the selectable-link <NUM> on the GUI <NUM> displayed on the screen <NUM> of the user device <NUM> and launch the application <NUM> using the application identifier <NUM> after receiving a selection indication indicating selection of the selectable-link <NUM> displayed on the GUI <NUM>. In some examples, the first message <NUM>, when received by the user device <NUM>, is further configured to, after launching the application <NUM>, populate the application <NUM> with the unique feature <NUM> associated with the user device <NUM>. The verification code <NUM> is transmitted to the data processing hardware <NUM> in response to the user device <NUM> receiving confirmation to register the user device <NUM> with the application <NUM>. In some implementations, the first message <NUM>, when received by the user device <NUM>, is further configured to cause the user device <NUM> to display a confirmation notification <NUM> in the GUI <NUM> once the application <NUM> launches. The confirmation notification <NUM> may include a button, that when selected by a user <NUM> of the user device <NUM>, indicates confirmation by the user <NUM> to register the user device <NUM> with the application <NUM> and causes the user device <NUM> to transmit the verification code <NUM> to the data processing hardware <NUM> without requiring user input of the verification code <NUM>.

The method <NUM> includes, at operation <NUM>, registering, by the data processing hardware <NUM>, the user device <NUM> with the application <NUM> in response to receiving the verification code <NUM> from the user device <NUM>. In some examples, registering the user device <NUM> with the application <NUM> when the verification code <NUM> is received from the user device <NUM> includes determining whether a period of time from when the first message <NUM> is transmitted to the user device <NUM> until the verification code <NUM> is received from the user device <NUM> satisfies a validity period threshold <NUM> associated with the verification code <NUM>. When the period of time satisfies the validity period threshold <NUM>, the user device <NUM> is registered with the application <NUM>. Alternatively, when the period of time dissatisfies the validity period threshold <NUM>, the data processing hardware <NUM> prevents registration by the user device <NUM> with the application <NUM>. When the period of time dissatisfies the validity period threshold, the method <NUM> may include transmitting a second message to the user device <NUM> using the unique feature <NUM>. The second message may include a new verification code <NUM> used to verify that the unique feature <NUM> is associated with the user device <NUM>.

In some implementations, the method <NUM> includes, after registering the user device <NUM> with the application <NUM>, transmitting a second message <NUM> to the user device <NUM>. The second message <NUM>, when received by the user device <NUM>, is configured to cause the user device <NUM> to notify a user <NUM> of the user device <NUM> that the user device <NUM> is successfully registered with the application <NUM>.

<FIG> is a flowchart of an example method <NUM> for verifying a feature <NUM> of a user device <NUM>. The flowchart starts at operation <NUM> by receiving, at data processing hardware <NUM> of a user device <NUM>, a first message <NUM> that includes a selectable-link <NUM> for verifying a telephone number <NUM> associated with the user device <NUM>. The selectable-link <NUM> includes metadata <NUM> corresponding to the telephone number <NUM>, a country code <NUM>, and a verification code <NUM> used to verify that each of the country code <NUM> and telephone number <NUM> is associated with the user device <NUM>. In some examples, the selectable-link <NUM> further includes an application identifier <NUM> identifying an application <NUM> that requires the country code and telephone number <NUM>, <NUM> associated with the user device <NUM> for registering the user device <NUM> with the application <NUM>. In this case, the method <NUM> also includes, in response to receiving the selection indication, launching, by the data processing hardware <NUM>, the application <NUM> on the user device <NUM> using the application identifier <NUM> and populating, by the data processing hardware <NUM>, the application <NUM> with the country code and telephone number <NUM>, <NUM> associated with the user device <NUM>.

The method <NUM> includes, at operation <NUM>, displaying, by the data processing hardware <NUM>, the selectable-link <NUM> in a graphical user interface executing on the user device <NUM>. At operation <NUM>, the method <NUM> includes receiving, at the data processing hardware <NUM>, a selection indication indicating selection of the selectable-link <NUM> displayed on the graphical user interface. After receiving the selection indication, the method <NUM> includes, at operation <NUM>, transmitting, by the data processing hardware <NUM>, the verification code <NUM> over a network <NUM> to a service <NUM> in communication with the data processing hardware <NUM>. The verification code <NUM> is configured to, in response to the service <NUM> receiving the verification code <NUM>, cause the service <NUM> to verify that the telephone number <NUM> is associated with the user device <NUM>.

In some implementations, after receiving the selection indication indicating selection of the selectable-link <NUM>, the method <NUM> includes displaying, by the data processing hardware <NUM>, a confirmation notification (e.g., a button) <NUM> on the graphical user interface and receiving, at the data processing hardware <NUM>, a second selection indication indicating selection of the confirmation button <NUM> to verify that the telephone number <NUM> is associated with the user device <NUM>. The method <NUM> also includes, in response to receiving the second selection indication, automatically transmitting, by the data processing hardware <NUM>, the verification code <NUM> to the service <NUM> without requiring user input of the verification code <NUM>.

Optionally, the method <NUM> includes, prior to receiving the first message <NUM>, transmitting, by the data processing hardware <NUM>, a request to the service <NUM> requesting to launch an application <NUM> on the user device <NUM> or to access a resource. The request includes the telephone number <NUM> associated with the user device <NUM> and the service <NUM> uses the telephone number <NUM> received by the request to transmit the first message <NUM> to the user device <NUM>.

For example, it may be implemented as a standard server 800a or multiple times in a group of such servers 800a, as a laptop computer 800b, or as part of a rack server system 800c.

<FIG> is schematic view of data processing hardware of an example user device <NUM>, such as user device <NUM> of <FIG>), that may be used to implement the systems and methods described in this document. In the illustrated example, the user device <NUM> includes a processing device <NUM>, a storage device <NUM>, a network interface <NUM>, and a user interface <NUM>.

The processing device <NUM> (e.g., data processing hardware) includes memory (e.g., RAM and/or ROM) that stores computer readable instructions and one or more processors that execute the computer readable instructions. In implementations where the processing device <NUM> includes two or more processors, the processors can execute in a distributed or individual manner. The processing device <NUM> may execute a search application <NUM>, a web browser <NUM>, an operating system <NUM>, and one or more native applications <NUM>, all of which may be embodied as computer readable instructions. The storage device <NUM> includes one or more computer readable mediums (e.g., hard disk drive and/or flash memory). The storage device <NUM> can store the computer readable instructions that make up the search application <NUM>, the web browser <NUM>, operating system <NUM>, and the one or more native applications <NUM>. The network interface <NUM> includes one or more devices that are configured to communicate with the network. The network interface <NUM> can include one or more transceivers for performing wired or wireless communication. Examples of the network interface <NUM> can include, but are not limited to, a transceiver configured to perform communications using the IEEE <NUM> wireless standard, an Ethernet port, a wireless transmitter, and a universal serial bus (USB) port. The user interface <NUM> includes one or more devices that receive input from and/or provide output to a user. The user interface <NUM> can include, but is not limited to, a touchscreen, a display, a QWERTY keyboard, a numeric keypad, a touchpad, a microphone, and/or speakers.

Claim 1:
A method (<NUM>) comprising:
receiving, at data processing hardware (<NUM>) of a remote system (<NUM>) from a user device (<NUM>) registered with an application (<NUM>), an application registration request (<NUM>) inviting an unregistered user device (<NUM>) configured to execute the application to register the unregistered user device (<NUM>) with the application (<NUM>), the application registration request (<NUM>) comprising a unique feature (<NUM>) associated with the unregistered user device (<NUM>) and required for registering the unregistered user device (<NUM>) with the application (<NUM>);
in response to receiving the application registration request, generating, by the data processing hardware (<NUM>), a selectable-link (<NUM>) for registering the unregistered user device (<NUM>) with the application (<NUM>), the selectable-link (<NUM>) comprising:
an application identifier (<NUM>) identifying the application (<NUM>); and
a verification code (<NUM>) used to verify that the unique feature (<NUM>) is associated with the unregistered user device (<NUM>);
transmitting, by the data processing hardware (<NUM>), a first message (<NUM>) comprising the selectable-link (<NUM>) to the unregistered user device (<NUM>) using the unique feature (<NUM>), the first message (<NUM>), when received by the unregistered user device (<NUM>), configured to cause the unregistered user device (<NUM>) to:
display the selectable-link (<NUM>) on a graphical user interface (<NUM>) executing on the unregistered user device (<NUM>);
in response to receiving a selection indication indicating selection of the selectable-link (<NUM>) displayed on the graphical user interface (<NUM>) to:
launch the application (<NUM>) using the application identifier;
populate the application with the unique feature; and
transmit the verification code (<NUM>) to the data processing hardware (<NUM>) in response to the unregistered user device (<NUM>) receiving confirmation to register the unregistered user device (<NUM>) with the application (<NUM>); and
in response to receiving the verification code from the unregistered user device (<NUM>), registering, by the data processing hardware (<NUM>), the unregistered user device (<NUM>) with the application (<NUM>).