`
`a2) United States Patent
`US 9,348,572 B2
`(10) Patent No.:
`Farm etal.
`(45) Date of Patent:
`May 24, 2016
`
`
`(54) REWARDING MOBILE APP INSTALLATIONS
`WITHOUT A SOFTWARE DEVELOPMENT
`KIT IN THE MOBILE APP
`
`.
`.
`.
`(71) Applicant: Tapjoy, Inc., San Francisco, CA (US)
`
`(72)
`
`Inventors: Christopher Paul Farm, San Francisco,
`CA (US); Brian Stebar, San Francisco,
`CA (US); Johnny Chan,San Francisco,
`CA (US); Steve Tan, San Francisco, CA
`(US)
`
`(73) Assignee: Tapjoy, Inc., San Francisco, CA (US)
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`8,458,656 BI*
`8,850,535 B2*
`
`6/2013 Liangetal. ww. TAT/118
`9/2014 Liberman ............ HO4L 9/3231
`713/186
`
`(Continued)
`
`FOREIGN PATENT DOCUMENTS
`
`KR
`KR
`KR
`
`20060018031 A
`20120081404 A
`20120090135 A
`
`2/2006
`7/2012
`8/2012
`
`OTHER PUBLICATIONS
`
`(*) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`USS.C. 154(b) by 0 days.
`
`Korean Patent Office, “Search Report” in application No. PCT/
`US2014/026748, dated Jul. 28, 2014, 14 pages.
`(Continued)
`
`(21) Appl. No. 14/205,807
`(22)
`Filed:
`Mar. 12,2014
`
`(65)
`
`Prior Publication Data
`US 2014/0282497 Al
`Sep. 18, 2014
`
`on
`Related U.S. Application Data
`(60) Provisional application No. 61/793,833, filed on Mar.
`15. 2013
`°
`,
`
`(51)
`
`(2006.01)
`(2006.01)
`(2012.01)
`
`Int. Cl.
`GO6F 9/45
`GO6F 9/445
`G06 30/02
`(52) U.S.CL
`CPC GO06F 8/61 (2013.01); G06Q 30/02 (2013.01);
`GO6F 9/445 (2013.01)
`,
`,
`,
`,
`(58) Field of Classification Search
`CPC ic eeescesessccereereeteesecssesseseeesaes GO06F 8/60-8/70
`USPC loc cceesereescneceseecnetenenseeseneees 717/168-178
`See application file for complete search history.
`
`Primary Examiner — Matthew Brophy
`(74) Attorney, Agent, or Firm — Hickman Palermo Becker
`Bingham LLP
`ABSTRACT
`(57)
`In an embodiment, a method comprises transmitting, from a
`mobile computing device to a server computer, first data
`identifying a selection at the mobile computing device of an
`app that is not associated with an identification module asso-
`ciated with the server computer that would allow the server
`computer to identify the device; receiving, at the mobile
`computing device from the server computer, second data
`identifying zero or more appslackingthe identification mod-
`ule that have been selected previously using the mobile com-
`puting device; determining whether a protocol handler for
`each of the zero or more apps lacking the identification mod-
`ule is in the mobile computing device; in response to deter-
`miningthat a particular protocol handler for one ofthe appsis
`in the mobile computing device, transmitting to the server
`computer a message specifying that the particular protocol
`handleris in the mobile computing device; communicating a
`rewardto any of: a particular oneofthe apps that is associated
`with the particular protocol handler, or a user account asso-
`ciated with the mobile computing device; wherein the method
`is performed by one or more computing devices.
`
`27 Claims, 9 Drawing Sheets
`
`
`
`
`rsaae|Teer
`
`Service Provider
`
`/ 804 Device 1D: Click. noting:
`em
`
`|
`"App with no 1D Module”
`602 Device ID:“Any
`|
`| [__LDibesscts”|804Listof IDM-ess apps|
`
`
`
`U“Glocmmmcsodtsaver |
`[ettmotethandes
`|
`computer at install or open);
`|
`protocol handlers
`| protocol handler become known |
`i
`to.0S
`i
`
`|
`
`610 Receive 10 ofinstalled |
`supported protocol handler|
`ret 42 Communicate reward|
`
`
`
`
`
`
`
`
`Supported
`protocolhandler
`present?
`
`{Repeat untilall
`checked)
`
`Page 1 of 23
`
`ironSource Exhibit 1022
`ironSourceLtd. v. Digital Turbine Inc. PTAB-PGR2021-00096
`
`
`—————— 818 Failure notification, fneeded|
`
`
`
`US 9,348,572 B2
`
`Page 2
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`9,069,979 B2*
`6/2015 Srinivasan ............. GO6F 21/62
`
`2003/0084439 Al*
`5/2003 Perkinset al... TAVATT
`2010/0280955 AL* 11/2010 Ross veces: GO6F 21/34
`705/64
`2011/0185354 AL*
`7/2011 Tanneretal. occ TAT/AT8
`SerOsee AL
`OMT ASCEAcen 705/141
`2012/0191569 Al*
`7/2012 Shah cess G06Q 30/0641
`705/26.41
`2013/0036458 Al*
`2/2013 Liberman ............. HO4L 9/3231
`726/6
`3/2013 Thavasi ............... GO6F 21/31
`7126/7
`3/2013. Thavasi vcs GO6F 21/32
`726/7
`
`2013/0067546 A1*
`2013/0067547 AL*®
`
`2013/0191887 AL*
`
`2014/0025469 Al*
`
`2014/0188980 Al*
`2014/0236742 Al*
`
`*
`
`2014/0282358 AL®
`2014/0282497 AL*
`
`7/2013 Davis ccc HO4L 63/0823
`72615
`1/2014 Mishuku........... G06Q 30/0225
`705/14.26
`........... 709/203
`7/2014 Longhenry etal.
`8/2014 Sakuma cesses G06Q 30/0277
`705/14.73
`7
`9/9
`9/2014 Mowaltt acrscrwrcen OOood
`9/2014 Farmetal. weecessceeee TIT/178
`
`OTHER PUBLICATIONS
`«ots
`a
`Claims in Korean application No. PCT/US2014/026748, dated Jul.
`2014, 6 pages.
`
`* cited by examiner
`
`Page 2 of 23
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 1 of 9
`
`US 9,348,572 B2
`
`eseqejeqOLT
`
`PIT
`
`
`
`JayndwogJaAlas
`
`901
`
`uonnquisigddySOT
`
`Jajndwo4
`
`b‘Sld
`
`
`
`BulAjquap|aa|Aeq
`
`
`
`Wuyvol
`
`
`
`JOOSGENKZT
`
`OMAN
`
`JaseapySOT
`
`Jajndwo9
`
`col
`
`algo
`
`ad1Aeq]
`
`cOL
`
`sIgoW
`
`adlAeq
`
`Page 3 of 23
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 2 of 9
`
`US 9,348,572 B2
`
`
`
`
`
`abedgan772
`
`qlac1aq
`
`aseqeye;“Be=qejeqOLL[woo'folder-mam‘*6'9]
`
`ejeq/,<e0edseweu>y/:,.dde,=Je1ye>
`
`MUDPL?
`
`
`
`JayndwogJealased
`
`eye
`
`
`
`SOL1B|PUBH[OD0}O1dBO?
`
`
`
`JE|PUEH[090}01,FOZ
`
`éOld
`
`
`
`Sd1A9QSIIGOWZOT
`
`Page 4 of 23
`
`yOL
`
`wunMasSOe
`
`
`
`Bulkjquap|ealAeq
`
`vi
`
`qlao1naq
`
`ddy3sulqZ0Z
`
`JOAlasGaNZEL
`
`
`
`uleWOpJO}“BS
`
`woo'holde}
`
`ylOMISN
`
`ql1Asq
`
`‘
`
`
`
`PEGIIED‘JOLNUSPISDIASP95)
`
`
`aeenea|‘yepasied
`
`
`
`BegWWe91deou9}uy
`
`JISMOlGO12
`
`eed
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 3 of 9
`
`US 9,348,572 B2
`
`
`
`pajeje!pue‘yqssJapiaoidaolasesuimpoxuy‘ddyEGF
`
`
`
`
`
`
`
`JepiAoidBd1AeSUjIMpayeloosse
`
`
`
`QdIAapUOpalsjsiBalYpayeysulaeJajpueyjooojoud
`
`
`
`paysneuxe|qun
`
`
`jooojoldyxeuALLOTE
`
`
`
`adIAap0]JsanbassasnedpajogjasUaYyM
`
`
`
`-B]eppue‘jeqe|e‘VayNUep!jodo}O/de
`
`
`
`
`
`sapnjoutyeu)Yul]sulBJUODoBedganFOF
`
`
`
`sanbeypaziuBooauun
`
`SolAep
`
`JoasuodsaoNBOE
`
`SU}SHOAU!0}JAWOOF
`
`g[iIqoway}uo}sanbal
`
`
`
`Ve‘Sid
`
`
`
`abedgamsassacoeSalAapaligoZe
`
`
`
`
`
`
`
`BOIASPSOAIBDLJaINdWODJANESHZE
`
`
`
`
`
`
`
`
`
`
`
`Guawebebus-aJo]‘“Ba)ddepuodas0}
`
`yoeg||edBIAB}eppueJayluapl
`
`
`
`sayquep!eaeenbiunsule}goyasOTE
`
`BjepJeyjopuesaynuaplsaiAapsessedyqs-jeuondaBTS
`
`
`
`
`
`
`BIASWO}
`
`
`
`PUBJOAJAS0}YORGII20sejnoexeyasSTF
`
`
`
`eleppueseyjuaplsolaapsepiaoid
`
`
`apooddeaageuseBujuunsyqsjouoyounsPre
`
`
`
`
`
`Jayguep!jooojoiduopeseg‘peljeysulIVejpuey
`
`
`
`jaqeHuiyoyewHuyosjepuopaseqjsenbausidacaqul
`
`
`
`
`
`
`
`
`
`jos0}01dSayonulAjeonewoNesolAepayiqoy|ZTE
`
`
`
`
`
`eveOg
`
`geSls
`
`Wwol4
`
`vee
`
`Page 5 of 23
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 4 of 9
`
`US 9,348,572 B2
`
`jooojoidumouyBulfyloadsTYSplAdldZPE
`
`
`
`
`919009[e007BIEP8101SHEE
`
`
`
`ddejouoyeyeysulasneyOPe
`
`JUSWASILOANRBIA
`
`ajqnedwodeUlIMpelqeue
`
`
`
`Jajpueyjooojold
`
`
`
`
`
`semjeuddeo}uojoun)uojejsibespue
`
`JUSWWASIL@APeBIApaljelsul
`
`vLE401g
`
`OLVVE
`
`VE“Old
`
`abelo}s
`
`
`
`OPIS-JBAIESpepsjesSem
`
`
`
`ddeyoiumBuneoipul
`
`S|jesulJesOE
`
`
`
`ddepayloads
`
`
`
`9019VE“OsSUSSHISIA~OJOST]BEE
`
`
`
`ZOEJEPIAOIdBdIAJASJO
`
`
`
`ulujimabedgan,
`
`AISBdlAlaS
`
`
`
`
`
`ddeA1aaoasiq(991A8pUOpuno|
`
`ae‘Sis
`
`ajquedwodON)OFF
`
`
`
`Ja|pueyjosojold
`
`Page 6 of 23
`
`
`
`JasnyonysulJoasnedZEEE
`
`
`
`
`
`$iyeu}ddepayloads|je}Sul0}
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 5 of 9
`
`US 9,348,572 B2
`
`3zp|JOSANOWSIN
`
`2
`
`FOVYOLSWOMNIV
`
`snd
`
`
`
`MYOMLANFOVAYSLNIvOr
`
`
`
`NOLLVOINNWNOSYOSS300"d
`
`ySls
`
`AV1dSI
`
`VIP
`
`
`
`SOIASGLAdNI
`
`OV
`
`yOSYND
`
`TOXLNOD
`
`Page 7 of 23
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 6 of 9
`
`US 9,348,572 B2
`
`puesyeysulddyHG
`
`EM488090S
`
`
`(aplAoiddIAJ8S0}JUas
`ejepadlaapou)suedo
`LYdivesST
`
`ddyOTS
`
`ddy71S
`
`asieapy
`
`605
`
`
`
`‘qlddy‘gq,salaeqOFS
`
`
`
`‘Buyjou‘49119
`
`v2INPOWGIOUYIMddy,,
`
`(payeysul)ddyOG
`
`UOHeOyHUap|PCS
`
`
`
`BIIAIBSJO}a/NPo|
`
`JODIAO!d
`
`plemay
`
`
`
`SOA,JO}
`
`[O90}014OTS
`
`Jajpuey
`
`
`
`HunjeisdoFTG
`
`wa}shS
`
`
`
`JaNdwo4yJeAlasOOT
`
`
`
`
`
` aa1neqSuyndwogajigowZOSG‘Old
`
`
`
`
`
`jooojoidsesiboy7ZS
`
`Jajpuey
`
`Page 8 of 23
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 7 of 9
`
`US 9,348,572 B2
`
`
`
`siajpuey|ooo}oJd
`
`809
`
`payoddns
`
`ie|gunyeoday)
`
`(payoeyo
`
`
`
`papaauJ!‘uoHeoyoueinesO79
`
`ijuasaid
`
`
`Jajpueyjooojod
`
`
`Jajpueyjooojoidpayoddns
`
`
`
`PJEMA!BJESIUNWWODZT9
`
`»éS¥O1J9SSOCI
`
`JOsoUaSeldJO}SEO[10d909
`
`SJa|pUeYjOdO}OJdWay}pue
`
`sddessel-iql101S!1POO
`
`ou)suadopuesyeisulddy#15
`
`J8AJOS0]payeoluNWWOdeyep
`
`
`
`
`
`Auy,,:G|891N9qZ09
`
`
`
`
`
`‘Buljou‘49119:q}8a1AeqTO9
`
`v8|NPOWG}ouYIMddy,
`
`(payeysul)ddyFOS
`
`JO}9INPOWAIFES
`
`
`
`JEPIAOIgBIIAI8S
`
`
`
`JajndwodJaAlasO07
`
`9‘SIs
`
`Page 9 of 23
`
`‘(UedoJO|je}SulJea}Ndwos
`
`P9|JEISUlJO|SAls9ayOLO
`
`SOoO}
`
`
`
`UMOUYBLUODAQJa;pUeYjod0}O/d
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 8 of 9
`
`US 9,348,572 B2
`
`alosddyOT7
`
`
`
`JayndwogJanespyPTZ|
`
`WasSO!90Z
`
`i|
`
`re ee
`
`
`
`
`
`ddyaosddy907
`
`
`
` rs||auayosTNWoIsngZTZIPoo.NNNJ(iasmaapy)ddyOTZ
`
`
`
`a
`
`(aysiiqnd)ddyPOZ
`
`Page 10 of 23
`
`
`
`
`
`
`U.S. Patent
`
`May24, 2016
`
`Sheet 9 of 9
`
`US 9,348,572 B2
`
`
`
`JENdWODJaAIESpyPLT
`
`
`
`
`
`aosddyOTE(9)
`
`(ploupuy)8‘OJ
`
`cr
`
`i|i|||
`
`
`(Jasmeapy)ddyO18
`re|(iaysiqnd)ddyFoe
`ddyaosddy09
`|xdSPlopuyS08||
`9019ZOS
`
`Page 11 of 23
`
`
`
`
`
`US 9,348,572 B2
`
`1
`REWARDING MOBILE APP INSTALLATIONS
`WITHOUT A SOFTWARE DEVELOPMENT
`KIT IN THE MOBILE APP
`
`BENEFIT CLAIM
`
`This application claims the benefit under 35 U.S.C. §119
`(e) ofprovisional application 61/793 ,833, filed Mar.15, 2013,
`the entire contents of which are hereby incorporated by ref-
`erence asif fully set forth herein.
`
`FIELD OF THE DISCLOSURE
`
`The present disclosure generally relates to data processing
`techniques for connecting data associated with mobile web
`browser activiies and data associated with native mobile
`
`device application activities.
`
`BACKGROUND
`
`The approaches described in this section are approaches
`that could be pursued, but not necessarily approaches that
`have been previously conceivedor pursued. Therefore, unless
`otherwise indicated, it should not be assumedthat any of the
`approaches described in this section qualify as prior art
`merely by virtue of their inclusion in this section. Tracking
`the activities of users that download and engage with com-
`puter program applications (“apps”) for mobile computing
`devices is an important goal of such app vendors. One
`approach used to track such activities is to obtain unique
`device identifiers for the end users’ mobile computing
`devices. The unique device identifiers in the context of
`APPLE IPHONEdevices running APPLE’s iOS operating
`system take a variety of forms,
`including UDID, MAC
`Address, advertisingIdentifier, Vendor ID, and other equiva-
`lent values or fields that are sufficiently unique to identify
`individualdevices (collectively, “UIDs”). In current practice,
`server computers that are in contact with Apple iOS based
`apps are able to request and obtain any of these UID values
`from mobile computing devices, however, only the UDID is
`accessible by mobile browsers on Apple iOS based devices
`through a provisioning profile. Therefore, on Apple iOS
`devices, the ability to associate app-based activities with
`browser-based activities for individual users is hindered
`
`whenever app-based activities do not have access to the
`UDIDofa given device.
`A protocol handler provides communication services
`allowing one computing device or software application to
`send data to other devices or software applications under
`specific communication rules specified by the protocol.
`Simple Mail Transfer Protocol (SMTP) and File Transfer
`Protocol (FTP) are examples of protocols that may be asso-
`ciated with protocol handlers, which interpret messages or
`requests that conform to those protocols. Protocol handlers
`have been used for the purpose of launching apps or passing
`data on or between mobile computing devices or other
`devices. For example, it has been possible fora first app to
`invoke a function of a second app by using an inter-app
`messaging facility to send a request, formatted according to
`the second app’s protocol. However, these mechanisms are
`not alwayspractical in particular contexts.
`
`SUMMARY
`
`The appended claims may serve as a summary ofthe inven-
`tion.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`In the drawings:
`FIG.1 illustrates a networked computer system arrange-
`ment that may be used to implement an embodiment.
`FIG.2 illustrates further details of an embodiment of the
`
`system of FIG.1.
`FIG. 3A illustrates a computer-implemented process that
`maybe used to implement an embodiment.
`FIG. 3B illustrates another embodiment of a computer-
`implemented process that may be used to implement an
`embodiment.
`
`FIG.4 illustrates a computer system that may be used to
`implementaspects of an embodiment.
`FIG.5 illustrates a networked computer system that may be
`used to implement IDM-less distribution of an advertiser’ s
`apps using apps on mobile computing devices which have
`identification modules (IDMs)installed in a publishing app.
`FIG.6 illustrates a process of configuring apps on mobile
`computing devices to support distribution of advertisements.
`FIG. 7 illustrates request and response communication
`between a device, ad server computer, and app store in an
`embodiment in which APPLE IOSis the operating system of
`the mobile computing device.
`FIG. 8 illustrates request and response communication
`between a device, ad server computer, and app store in an
`embodiment in which ANDROIDis the operating system of
`the mobile computing device.
`
`DETAILED DESCRIPTION OF EXAMPLE
`EMBODIMENTS
`
`In the following description, for the purposes of explana-
`tion, numerousspecific details are set forth in order to provide
`a thorough understanding of the present invention. It will be
`apparent, however, that the present invention may be prac-
`ticed without these specific details. In other instances, well-
`knownstructures and devices are shown in block diagram
`form in order to avoid unnecessarily obscuring the present
`invention.
`
`1. General Overview
`
`In an embodiment, a data processing method comprises:
`during a first execution ofa first app that is configured with an
`identification module, the first app requesting one or more
`advertisements from an ad server computer; receiving, from
`the ad server computer, an electronic advertisement compris-
`ing areference to a second app, wherein the second appis not
`configured with the identification module; displaying the
`electronic advertisement within thefirst app; receiving input
`selecting the electronic advertisement; sending to the ad
`server computer a message specifying that
`the ad was
`selected; receiving andinstalling the second app, wherein the
`second app is configured with an app-specific software unit;
`during a second executionofthe first app, receiving from the
`ad server computera list of app-specific software units that
`are paired with one or more click identifiers that are associ-
`ated with the device, wherein each of the click identifiers
`indicates a previousselection ofan app that is not configured
`with the identification module; determining whetherthe sec-
`ond app is installed by matching an identifier of the app-
`specific software unit of the second appto the list of app-
`specific software units that was received from the ad server
`computer; in response to detecting that the second app is
`installed, sending an app ID for the second appto the ad server
`computer and receiving a reward.
`
`Page 12 of 23
`
`
`
`US 9,348,572 B2
`
`3
`In one feature,the first app and second app are configured
`for operation with APPLE IOSoperating system software and
`wherein the app-specific software unit is a registered custom
`URLscheme.
`
`In one feature,the first app and second app are configured
`for operation with ANDROID operating system software and
`wherein the app-specific software unit is an app-specific soft-
`ware package.
`In one feature, the method further comprises receiving the
`selection of the app via an offer wall that is hosted bythefirst
`app. In one feature, the method further comprises storing the
`first data at the server computeraspart of a recordofpotential
`app conversion transactions. In one feature, the click identi-
`fiers comprise click keys. In one feature, the reward com-
`prises any one or moreof: virtual goods; virtual services; or
`badgesor other virtual objects.
`In an embodiment, a method comprises transmitting, from
`a mobile computing device to a server computer, first data
`identifying a selection at the mobile computing device of an
`app that is not associated with an identification module asso-
`ciated with the server computer that would allow the server
`computer to identify the device; receiving, at the mobile
`computing device from the server computer, second data
`identifying zero or more apps lacking the identification mod-
`ule that have been selected previously using the mobile com-
`puting device; determining whether a protocol handler for
`eachof the zero or more apps lacking theidentification mod-
`ule is in the mobile computing device; in response to deter-
`mining that a particular protocol handler for one ofthe appsis
`in the mobile computing device, transmitting to the server
`computer a message specifying that the particular protocol
`handleris in the mobile computing device; communicating a
`reward to any of: a particular one ofthe apps that is associated
`with the particular protocol handler, or a user account asso-
`ciated with the mobile computing device; wherein the method
`is performed by one or more computing devices.
`Embodiments may also encompass computer apparatus,
`non-transitory data storage media storing instructions which
`when executed cause performing the disclosed methods, and
`other features and aspects that will become apparentfrom the
`following description.
`
`2. Structural & Functional Overview
`
`FIG.1 illustrates a networked computer system arrange-
`ment that may be used to implement an embodiment. In an
`embodiment, the computer system generally comprises one
`or more mobile computing devices 102, a network 104, at
`least one server computer 106 coupled to a database 110, one
`or more app distribution computers 105 and one or more
`advertiser computers 108.
`Each of the computing devices 102 comprises a smart-
`phone,tablet computer, netbook computer, laptop computer,
`or other movable computer, or computing devices that are
`typically stationary such as desktop computers or worksta-
`tions. Examples include APPLE IPHONEand IPAD devices,
`ANDROIDdevices, etc. Typically wireless links couple the
`mobile devices 102 to network 104, which broadly represents
`one or more local area networks, wide area networks, inter-
`networks, global interconnected internetworks such as the
`public internet, or a combination thereof. For purposes of
`illustrating a clear example, two (2) mobile devices 102 are
`shown in FIG. 1 and one cloud symbolrepresenting network
`104 is shown, but practical implementations may use thou-
`sands or millions of mobile devices and any numberofinter-
`connected networks.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`App distribution computer 105 is associated with a devel-
`oper, author or publisher of a mobile device application com-
`puter program or app, or a distribution channel such as a
`centralized app downloading service; examples include the
`APPLE APP STORE and GOOGLEPLAYservice. The app
`may be a gameapp, utility app, product-related app, or other
`app. Typically the app developer, author or publisher desires
`to provide advertising within the graphical user interface
`displays of the app, or is willing to enable certain functions,
`options or features in the app in exchange for display of
`advertising within the app. The advertiser computer 108 may
`serve ads to apps installed on mobile devices 102 directly or
`the server computer 106 may serve the ads. In somecases the
`apps require integration of an identification module for
`proper operation with the advertiser computer 108.
`Server computer 106 may be owned and operated by an app
`vendor, advertising network operator, or other party other
`than users who ownor operate the mobile devices 102. In an
`embodiment, server computer 106 hosts at least a web server
`112 and a device identifying unit 114, which is configured to
`perform the processes herein associated with obtaining
`device identifying information from the mobile devices 102.
`In oneparticular embodiment, server computer 106 is asso-
`ciated with an advertising networkservice that directs adver-
`tisements to apps that use or are coupled to an identification
`module provided by or associated with the server computer
`that would allow the server computerto identify the device. In
`various embodiments, the identification module may com-
`prise an application programminginterface (API) or software
`development kit (SDK) defined by the advertising network
`service. An API or SDKare merely convenient examples; the
`identification module may comprise any executable code seg-
`mentthat the server computerassists in placing on the mobile
`computing device for interaction with an app using the tech-
`niques herein.
`In a commercial embodiment, the service is Tapjoy, Inc.,
`San Francisco, Calif. Advertisers associated with computer
`such as advertiser computer 108 place advertisements with
`the service provider. Publishers, such as software developers,
`game developers, or vendors of products or services, cause
`authoring and publication of apps that may provide non-
`advertising functions, suchas games. The publishing apps use
`or are associated with the API or SDKdefined by the service
`provider. The service provider routes advertisements from
`advertiser computer 108 to the apps via the API or SDK.
`Compensation flows between the advertiser, service provider,
`and publishers according to known advertising compensation
`models. Users of mobile devices 102 benefit from use of the
`apps and exposure to products or services that may interest
`them. For example, users may receive rewards, and advertis-
`ers may benefit from greater integration of apps and services
`that the advertisers offer. Users also interact with ads served
`from network 104.
`Server computer 106 may be coupledto a database 110 that
`is configured to store data obtained from the mobile devices
`102.
`FIG.2 illustrates further details of an embodiment of the
`
`system of FIG. 1. In an embodiment, one of the mobile
`devices 102 hosts, executes or otherwise comprisesa first app
`202, second app 206, and mobile web browser 210. First app
`202 registers a protocol handler 204 with the mobile operat-
`ing system and 105 the app distribution computer. Theregis-
`tered protocol handler 204 is configured to respond to mes-
`sages or requests that are tagged with a protocol identifier
`prefix that routes messages directly to thefirst app 202 orits
`registered protocol handler 204. Thefirst app 202 also utilizes
`SDKcode 205 that is configured to perform special process-
`
`Page 13 of 23
`
`
`
`US 9,348,572 B2
`
`5
`ing, further described herein, when messages or requests in
`the protocol also include a label or namespace value that
`signifies a request for special processing. Second app 206 has
`a registered second protocol handler 208 that is configured to
`respond to messages or requests that are tagged with a pro-
`tocol identifier that uniquely identifies the second apporits
`protocol handler 208. Second app 206 may comprise SDK
`code 207 that is configured to perform special processing for
`requests in the second protocol that include the label or
`namespacevalue that signifies special processing, as further
`described.
`
`For purposesofillustrating a clear example, FIG. 2 shows
`two apps 202, 206, protocol handlers 204, 208, and instances
`of SDK code 205, 207, but other embodiments may include
`any number of apps based upon the amount of memory or
`other storage that is available in the mobile device 102. For
`purposesofillustrating a clear embodiment, FIG. 2 does not
`show distribution platforms that may be used to assign the
`protocol handlers to the OSinstallations. Further, for conve-
`nience, FIG. 2 refers to code 205, 207 as SDK code, but in
`other embodiments the code 205, 207 may comprise any
`other identification module that the server computer can
`place, or assist in placing, on the mobile device to assist in
`determining certain identifying information as
`further
`described herein.
`
`SDK code 205, 207typically is statically linked or dynami-
`cally linked to the rest of the code of the first app 202 and
`second app 206, respectively, at the time that a developer
`prepares production versions of executables ofthe first app
`and second app. Consequently, at runtime, the SDK code 205,
`207 runs as native code in the mobile device 102. However,
`the source code for SDK code 205, 207 typically is defined by
`the owneror operator of the server computer 106 and is not
`always known to the app developer, author or publisher,
`except possibly with respect to public interfaces or APIs that
`the owneror operatorof the server computerelects to publish
`or disclose.
`
`Browser 210 may comprise a program, application, or
`script configured to send and receive HTTP requests and
`responses and to render HTML documents in a display unit of
`the mobile computing device 102. For example, browser 210
`mayrequest a web page 212, such as a home pageor other
`page ofthe domain www.tapjoy.com, commercially available
`from Tapjoy, Inc., San Francisco, Calif., which may contain
`one or more links 214, which are configured and used as
`further described herein.
`
`In the embodiment of FIG. 2, server computer 106 com-
`prises a web server 112 that is configured in the server com-
`puters of the public Domain Name System (DNS)as respon-
`sive to HTTP requests that
`include the domain name
`tapjoy.com, or the equivalent. Web server 112 may operate
`underthe control or direction ofa device identifying unit 114,
`which may comprise logic or program codethat is configured
`to perform the server-side operations that are further
`described herein with respect to FIG. 3A.In particular, device
`identifying unit 114 is configured to generate web page 212 as
`described below and to generate one or more links 214,
`dynamically if necessary, as further described herein for FIG.
`3A.
`
`FIG. 3A, FIG. 3B illustrate embodiments of a computer-
`implemented process that may be used to implement an
`embodiment. For purposesofillustrating a clear example, the
`process of FIG. 3A, FIG. 3B is described herein with refer-
`ence to the system of FIG. 1, FIG. 2, but other embodiments
`maybe used in connection with different computer arrange-
`ments that yield equivalent or similar functional results.
`Page 14 of 23
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`Referring first to FIG. 3A, at block 302, a mobile device
`accesses a web page associated with a service provider. For
`example, mobile device 102 of FIG. 1, FIG. 2 accesses the
`webserver 112 of the server computer 106. In one particular
`example, an IPHONE device user might use the SAFARI
`browser built into the IPHONE device to access the website
`www.tapjoy.com. Typically the mobile device 102 accesses
`the web page associated with the service provider for pur-
`poses of confirming an app that the mobile device previously
`downloaded.
`Block 303 indicatesthatat least one mobile app, which has
`been linked with the service provider’s SDK,andhas a pro-
`tocol handler, has been installed on the device. For example,
`at any time prior to execution of block 304 and subsequent
`functional blocks, a user of the mobile device selects, down-
`loads andinstalls a mobile app that has been linked with the
`service provider’s SDK by the app publisher, and that
`includesa related protocol handler.
`In an embodiment, the protocol handler associated with the
`mobile app is configured to use or respond to messages,
`requests or calls that identify a particular protocol associated
`with the mobile app, and the SDKis configured to process
`certain kinds of requests that carry a particular label or
`namespace value that has been defined by the service pro-
`vider, owner or operator of server computer 106. For
`example, at the time of compiling an executable production
`version of the app, the app publisher authors and/or registers
`a protocol handlerfor the app’s protocol, and alsostatically or
`dynamically links the app with executable code comprising
`the API or SDK,so that the resulting app executableis inte-
`grated with executable code for functions of the API or SDK.
`For purposesof illustrating a clear example, the following
`description refers to performing certain functions using an
`SDKthatis integrated with the protocol handler and/or app.
`The protocol handler comprises a program,set of routines,
`or other program codethat can respondto requests that carry
`protocolidentifiers associated with that particular handler. In
`an embodiment, the owner or operator of server computer
`106, or the services it provides, requests or requires publish-
`ers of apps to use orregister a protocol handler thatis desig-
`nated within their app before the publishers are able to use
`services, such as an advertising network, that are offered
`through the server computer. Typically the app publisher pro-
`vides a copy ofthe designated app or protocol identifier to the
`owneror operator of the server computer 106 for reference,
`validation or other purposes. Consequently, the server com-
`puter 106 is aware ofthe identity ofall apps andtheir protocol
`handlers that are configured to use services of the service
`provider that ownsor operates the server computer, and can
`seek to address the app as needed.
`An example of a protocol identifier, for a protocol handler
`associated with a mobile app named App1, is “app1://’. Other
`examples are described in other sections of this document. At
`the time ofinstallation, the protocol handler registers with the
`operating system ofthe mobile device using registration func-
`tion calls that are defined by the operating system. Through
`registration, the operating system creates a recordofthe exist-
`ence of the protocol handler and the protocol identifier with
`whichit is associated. Thereafter, when an inbound request
`arrives that specifies a particular protocol identifier, the oper-
`ating system is capable of passing the request to a protocol
`handler that matches the specified protocolidentifier.
`Asindicated in block 304, the web page that was accessed
`at block 302 contains a request link that includesa particular
`protocolidentifier, a label, and data. In an embodiment, a user
`of the mobile device invokes the request link by selecting a
`function, button or other GUI widget associated with com-
`
`
`
`US 9,348,572 B2
`
`8
`generating a succession of requests 214, each identifying a
`different possible protocol handler previously registered with
`the mobile device by an app publisher, until the mobile device
`is able to invoke a corresponding installed and designated
`protocol handler. Any numberof links may be created and
`used and in a practical embodimentdozens of apps and pro-
`tocols might need to betested.
`Blocks 306, 308, 310, 312, 304 represent a loop that cor-
`responds to the iterative protocol testing process outlined
`above. In an embodiment,at block 306, the web page config-
`ured as seen at block 304 issues a request by providing a link
`that is formatted according to a particular protocol. In an
`embodiment, requests have the format of a uniform resource
`identifier (URI). An examplelink 1s: app1://tapjoy_register/
`100423b44cd3387a33 where “app1”is a protocol identifier,
`“tapjoy_register” is a label or signaling string or namespace,
`and “100423b44cd3387a33”is a data value that is useful in
`
`7
`pleting a designated process. For example, the user may have
`directed the browser 210 to contact a web page 212 hosted by
`the server computer 106 that guidesthe user through a process
`ofregistering with a service provided by the server computer.
`The registration process might involve collecting, among
`other things, a username and/or email address for purposes of
`identifying the holder of an accountor the user of a device. At
`the conclusion of the registration process, the web page 212
`might contain a prompt such as, “To complete registration,
`click here to continue.”In responseto selecting the prompt,
`the link 214 is invoked.
`The data in link 214 may be any data that is necessary for
`performance of any of the other functions that have been
`previously described. For example, the data may comprise a
`click identifier that indicates a location within the web page,
`a function that the user invoked by making a selection, or
`other information about what the user was doing or attempt-
`ing to do. Additionally or alternatively, the data may represent
`any other available information about the device or the user
`suchas user e-mail address or username, or other values. The
`data need not permanently identify the device; for example,
`the data could include a temporary identifier such an adver-
`tisingIdentifier. In an embodiment, links or requests are com-
`municated from the mobile device to the server computer 106
`using a protocol that is stateless in the manner that HTT