`(12) Patent Application Publication (10) Pub. No.: US 2007/0174490 A1
`(43) Pub. Date:
`Jul. 26, 2007
`Choi et al.
`
`US 2007 O174490A1
`
`(54) SYSTEM AND METHODS FOR MANAGING
`CONTENT IN PRE-EXISTING MOBILE
`APPLICATIONS
`
`Publication Classification
`
`(51) Int. Cl.
`G06F 5/16
`
`(2006.01)
`
`(75) Inventors:
`
`Andrew C. Choi, Burlingame, CA
`(US); James L. Durrell,
`Collegeville, PA (US); Michael M.
`Chang, San Francisco, CA (US)
`Correspondence Address:
`UAMES E EAKN
`P.O. BOX 1250
`MENLO PARK, CA 94025-4317
`(73) Assignee:
`Greystripe Inc., San Francisco,
`CA (US)
`11/656,172
`
`(21) Appl. No.:
`
`(22) Filed:
`
`Jan. 19, 2007
`Related U.S. Application Data
`(60) Provisional application No. 60/762,445, filed on Jan.
`25, 2006, provisional application No. 60/800,101,
`filed on May 11, 2006, provisional application No.
`60/859,327, filed on Nov. 15, 2006.
`
`instrumented Application 250
`
`(52) U.S. Cl. ....................................................... 709/246
`
`ABSTRACT
`(57)
`Methods and systems for managing distribution and retrieval
`of data (for example advertising content and viewing sta
`tistics) and insertion of control logic (for example display of
`advertising content) into pre-existing mobile applications. In
`Some arrangements the method includes analyzing the pre
`existing application in the context of the target platform and
`the desired placement of new content, and instrumenting the
`application to Support the addition of the new content. The
`instrumenting process can include modification of the appli
`cation to support one or more of features selected from a
`group comprising user identification, usage tracking, bi
`directional communication with an advertising server, and
`displaying advertising content. The analysis and instrument
`ing process can be applied in a just-in-time fashion during
`application download. In some arrangements, a portal appli
`cation can be provided to reside on the mobile device for
`managing communications with an advertising server.
`
`
`
`Content Management
`Server 230
`
`Content Provider
`240
`
`
`
`
`
`
`
`
`
`
`
`
`
`| New Splash
`Screen
`
`Original
`Screens
`
`Carrier
`Network
`270
`
`
`
`Application
`instrumentation Server
`220
`
`260
`
`End Gao SVV -
`
`Application Distribution
`Server
`21O
`
`Application Publisher
`Original Application
`
`ill. - to
`
`Playrix Ex. 1006, Page 1 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 1 of 10
`
`US 2007/0174490 A1
`
`/CS Application Distribution
`
`Server 110
`
`End User 120
`
`Application Publisher 105
`Original Application 100
`
`instrumented Application 250
`
`
`
`Content Management
`Server 230
`
`Content Provider
`240
`
`
`
`
`
`New Splash
`Screen
`
`Original
`Screens
`
`Carrier
`Network
`270
`
`Application
`plica
`instrumentation Server
`220
`
`
`
`
`
`End User 280
`
`Application Publisher
`Original Application
`
`Application Distribution
`Server
`210
`
`u-Y
`
`t -
`
`Figure 2
`
`300
`
`developer
`
`220
`
`instru
`
`tation Serv
`
`410
`
`distributor
`
`415
`
`bile device
`
`Send Source app()
`305
`
`:
`
`--> instrument app() :
`return instrumented appo
`310
`- - 315
`send instrumented app() 320
`
`-
`
`--
`
`:
`:
`
`325
`request app download.()
`
`return instrumented app()
`! -->
`350
`
`Figure 3
`
`Playrix Ex. 1006, Page 2 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 2 of 10
`
`US 2007/0174490 A1
`
`400
`
`WeO
`
`220
`
`41 O
`
`U
`
`O
`
`e
`
`distributor
`
`260
`
`bile dev
`
`send source app() 405
`
`:
`
`send source app() 425 :
`-> instrument app()
`435
`return instrumented app()
`--0
`440
`return instrumented app()
`-)
`445
`
`:
`
`:
`
`request app download()
`42O
`
`Figure 4
`
`receive original application 510
`
`analyze application 520
`
`
`
`accept optional Control input
`from external systems 530
`
`modify application 540
`
`Figure 5
`
`Playrix Ex. 1006, Page 3 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 3 of 10
`
`US 2007/0174490 A1
`
`instrumentation Server 220
`
`Original
`Application
`200
`
`
`
`External
`640
`systems
`
`
`
`Inventory & action modules 620
`Presplash
`Postsplash
`Text Marquee
`Environment setup modules 615
`User D
`L 615A
`GPs
`Content management modules 610
`Ad Manager
`Network transport
`shim modules 605
`CLDC shims MDP shims
`
`Nokia shims
`
`Click-to-web
`
`Click-to-call
`
`Persistent storage
`
`Motorola shims
`
`a
`
`w
`
`Application
`Data 630A
`
`Module
`Data 630B
`
`PGs
`630C
`
`630
`
`Figure 6
`
`Figure 7
`220
`
`615A
`
`630
`
`O
`28
`
`210
`
`instrumentation ere
`
`user ID module
`
`database
`
`distribution Server
`USC
`E.
`request download() {
`--0 send original app()
`700 - - -
`Create app. entry0
`705
`--
`invoke modules for analysis(); 710
`-->
`create module and param entries() 72
`715 -->
`set user id value()
`-0
`-
`invoke modules for instrumentation()
`:
`-)
`725
`read user D value and instrument app()
`-0.
`:
`return instrumented app();
`:
`730
`---
`distribute app()
`:
`250
`:
`- :
`735
`
`707
`
`-b
`
`:
`
`:
`:
`:
`
`:
`
`:
`
`:
`-
`
`Playrix Ex. 1006, Page 4 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 4 of 10
`
`US 2007/0174490 A1
`
`Source application
`
`JAD
`MDiet.
`
`800
`
`resources
`
`platform APs
`
`Figure 8
`
`source application
`
`JAD
`MIDiet.-
`
`JAR
`
`A
`
`Class A
`
`unmodified
`classfiles
`
`H
`Class F
`Class D
`. Ll-s:
`It
`Class E
`
`Class C
`Y.
`Class B
`
`Original
`reSources
`rew
`reSOCeS
`
`900
`
`platform APIs
`
`Figure 9
`
`- - - -
`Java mobile application
`1000
`
`JAD file 1010
`
`Class file 1025
`
`JAR file 1020
`
`Manifest 1035
`
`Class files 1025
`
`
`
`Resource files 1030
`
`
`
`
`
`
`
`header info
`
`constant pool
`
`class identification
`
`interfaces
`
`fields
`
`methods
`
`attributes
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Figure 10
`
`Method 1040
`
`attributes
`
`
`
`
`
`code attribute 1045
`
`
`
`Playrix Ex. 1006, Page 5 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 5 of 10
`
`US 2007/0174490 A1
`
`1115
`instrumented application
`
`classfiles
`
`eSOCeS
`
`1100
`helper application
`Classfiles
`Resources
`1105
`1110
`
`Figure 11
`
`1200 instrumented application
`clas?is
`teSources
`12tors
`
`
`
`C C.
`
`
`
`
`
`Figure 12
`
`User
`280
`
`f
`
`mobile app
`1305
`
`start app()
`
`.
`
`instrumentation server
`220
`-
`
`ad targeting server
`1330
`
`ad content server
`1335
`
`ad server
`1300
`I
`notify of app ido
`1311
`send ID and usage stats() 1315
`update stats()
`--0 1317
`request ad contento 1320 - "
`->
`--0 request ad content.011325
`-- fetch targeted ads();
`return targeted ads)
`1345
`
`I
`return ad content()
`return ad content() 1355
`1350
`id---
`
`- 1340
`
`m b
`
`present ad content()
`1370
`
`cache ad content() 1360
`I
`-> update usage stats() 1365
`
`Figure 13
`
`Playrix Ex. 1006, Page 6 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 6 of 10
`
`US 2007/0174490 A1
`
`User
`280
`
`start app()
`1405
`
`mobile app
`1305
`
`portal app
`1400
`
`persistent store
`1420
`
`ad Server
`1300
`
`request download of portal app() 1410A
`fe
`download portal app() 1410B
`
`}
`
`dischedule periodic execution() 1415
`
`
`
`:
`
`present ad content() 1450
`- - update usage statsO 1455
`
`read ad content() 1445
`
`Figure 14
`
`Playrix Ex. 1006, Page 7 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 7 of 10
`
`US 2007/0174490 A1
`
`1305B
`
`1305A
`
`1420
`
`1300
`
`start app0 1405
`---------0
`:
`:
`: read usage stats0 : 1417
`H--O
`:
`:
`send usage stats() 1425
`:
`:
`get new ad content0 1430
`:
`
`return ad content0 1435
`.
`:
`K-
`:
`cache ad content() : 1440
`-0 :
`:
`update usage stats() 1455
`---
`
`:
`:
`-b
`:
`->
`
`:
`
`:
`;
`:
`
`present ad content()
`1450
`
`:
`start app0
`read ad content0 1510
`>
`1505
`--
`--
`present ad content();
`update usage stats01 55
`1520
`---
`
`b
`
`:
`
`Figure 15
`
`1305
`-
`mobile app
`---
`
`1300
`220
`ad server | instrumentation Server
`
`-
`
`1600
`inventory emulator
`---
`send instrumented app()
`1605
`
`1335
`ad Content Server
`
`o
`--> translate app to web pages()1610
`:
`continually crawl web pages() {
`-
`1615
`:
`
`:
`
`-)
`-> select ad content
`based on web pages
`1645
`
`:
`
`send usage stats()
`--> send usage stats() 1625
`1620
`H
`-
`:
`:
`
`:
`: reqest new ads();
`b
`1635 -
`
`:
`return ad content();
`H-T
`1655
`
`-
`
`Figure 16
`
`b
`--> update web pages()
`1630
`request new ads(). 1640
`-
`i
`:
`return ad content() 1650
`
`Playrix Ex. 1006, Page 8 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 8 of 10
`
`US 2007/0174490 A1
`
`
`
`Call Joe's .
`Get a coupon
`
`New pre-splash Screen
`1705
`
`Original Screens New post-splash Screen
`1700
`1710
`
`Figure 17
`
`Advertiser 1805
`
`Ads, S
`1810
`
`Stats
`1860
`
`Content management
`system 1800
`
`Apps, $
`1840
`
`S
`1835
`
`Distributor 1830
`
`Stats
`1855
`
`Apps, S
`1820
`Stats, S
`1825
`
`Application
`Developer 1815
`p
`
`
`
`
`
`
`
`
`
`Apps, $
`1870
`
`$
`1865
`
`
`
`Erld USer
`1845
`
`Figure 18
`
`Playrix Ex. 1006, Page 9 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 9 of 10
`
`US 2007/0174490 A1
`
`instrumented Application 250
`New Billing &
`Subscription
`Management Code
`New Content
`Management Code
`
`...--
`
`
`
`
`
`
`
`New Splash
`Screen
`250C
`
`Original
`Screes
`250A
`
`Content Management
`Server 230
`
`Carrier
`Network
`270
`
`Application
`Instrumentation Sever
`220
`
`260
`
`Application Distribution
`Sever 210
`
`End User 280
`
`Figure 19
`
`Billing & Subscription
`Management Server
`1900
`
`Content Provider
`240
`
`
`
`Application Publisher
`Original Application 200
`
`2000
`
`Instrumented Application 250
`New Content
`Management Code
`
`so (S red
`
`What's your
`favorite color.
`
`C blue
`Original
`New Survey Screens
`Screen
`250A
`Y
`
`260
`
`End User 280
`
`
`
`Carrier
`Network
`270
`
`
`
`
`
`Content Management - - - - -
`Server 230
`•
`
`Market Researcher
`Survey Server 2005
`
`Application
`instrumentation Server
`220
`
`Application Distribution
`Server
`210
`
`Application Publisher
`Original Application 200
`t
`
`---
`
`Figure 20
`
`Playrix Ex. 1006, Page 10 of 28
`
`
`
`Patent Application Publication
`
`Jul. 26, 2007 Sheet 10 of 10
`
`US 2007/0174490 A1
`
`Instrumented Application
`
`Personalized
`content 2105 " " "
`
`Application
`Instrumentation Server
`220
`
`Ed Gas VV -
`
`Application Distribution
`Server 210
`
`
`
`Figure 21
`
`Application Publisher
`
`2.
`EEE
`Replacement
`content 2110
`
`Original Application
`
`Replaceable
`... content
`2100
`
`2210
`
`Instrumented Application
`New Scores
`Management Code
`ill
`
`Your score:
`
`High scores:
`bob.....9999
`Original an.8822
`Screens
`john....7631
`25OA
`New High
`Scores Screen
`205
`
`N
`
`
`
`Scores Server
`2200
`
`Carrier
`Network
`270
`
`
`
`Application
`Instrumentation Server
`220
`
`End Gas VV -
`
`Application Distribution
`Server
`210
`
`Figure 22
`
`Application Publisher
`Original Application 200
`
`Playrix Ex. 1006, Page 11 of 28
`
`
`
`US 2007/0174490 A1
`
`Jul. 26, 2007
`
`SYSTEMAND METHODS FOR MANAGING
`CONTENT IN PRE-EXISTING MOBILE
`APPLICATIONS
`
`RELATED APPLICATIONS
`0001. This application claims the benefit of, and incor
`porates by reference, each of the following United States
`Provisional Patent applications, each of which has the same
`inventive entity and is assigned to the same assignee: Ser.
`No. 60/762,445, filed Jan. 25, 2006, entitled “System and
`Methods for Managing Content in Pre-Existing Mobile
`Applications'; Ser. No. 60/800,101, filed May 11, 2006,
`entitled “System and Methods for Managing Content in
`Pre-Existing Mobile Applications'; and Ser. No. 60/859,
`327, filed Nov. 15, 2006, entitled “System and Methods for
`Managing Content in Pre-Existing Mobile Applications.”
`
`FIELD OF THE INVENTION
`0002 The present invention relates primarily to data
`management techniques for mobile devices and to pre
`existing applications for Such devices, and more particularly
`relates to methods and techniques for modifying existing
`mobile applications to permit either of both insertion of
`content adapted for operation on the target device, and
`retrieval of appropriate user and usage information from the
`device.
`
`BACKGROUND
`0003 Most mobile applications (those designed to run on
`mobile devices, such as cell phones, Smart phones, PDAs,
`and portable game consoles) are developed in languages
`Such as Java and C++. The source code for these applications
`must be compiled into an object code format and packaged
`(typically in conjunction with application resources and
`application descriptor files) for distribution. If an application
`publisher wishes to introduce new functionality into an
`existing application, the application source code must be
`modified, recompiled, and redistributed. FIG. 1 PRIOR
`ARTI shows the distribution path of an application 100 from
`the application publisher 105 to the application distributor
`110 (which in some cases the same entity as the publisher),
`through the wireless carrier network 115, and ultimately to
`an end user's mobile device 120.
`0004. There are many examples of useful functionality
`that could be added to a mobile application after it has been
`developed and sent to an application distributor. A primary
`example of additional functionality is receipt and display of
`advertising content, although numerous other examples of
`Such functionality exist, including: billing and Subscription
`management, market research, personalization, and net
`worked game Support.
`0005. A large number of mobile applications have been
`developed which are provided to end users free of charge
`and which provide no direct revenue to the application
`publishers. In fact, in the U.S. market, usage of such free
`applications exceeds usage of purchased applications by an
`order of magnitude. Application publishers are interested in
`monetizing these applications via advertising content, but
`most have not yet done so due to the cost of retrofitting
`application Source code. Further, to date, there has been no
`viable method for retrieving appropriate user data to assist in
`monetizing these applications.
`
`0006. There has, therefore, been a long-standing need for
`systems and techniques for managing distribution of data
`(such as advertising content) and for retrieval of appropriate
`data (Such as advertising impression counts) to and from
`pre-existing mobile applications.
`0007 Existing web advertising systems such as Double
`Click distinguish between the concepts of advertisements
`and creatives in that an advertisement is a collection of
`creatives, where all creatives within a collection are images
`of the same dimensions. The advertisement collection con
`struct helps the advertiser organize creatives based on simi
`larities in advertising message. Such advertising systems
`first select an ad for placement in a specific website location
`(this selection is often manually configured) and then select
`from the creatives within the ad collection. Because all
`creatives within an ad collection share the same image
`dimensions, image dimension is not included in the criteria
`for creative selection. More generally, existing online adver
`tising systems assume that all creatives can be presented
`(displayed and interacted with) on all computers that attempt
`to view the website into which the creative is served.
`Because different devices have differing capabilities and this
`has not been addressed by existing web ad systems, there has
`been a need for a system for serving ads which takes into
`account the differing capabilities of the device to which the
`ad is being served. This is particularly true for mobile
`devices.
`
`SUMMARY OF THE INVENTION
`0008. The present invention substantially improves upon
`the prior art by providing systems, methods and techniques
`for adding content and control logic to pre-existing appli
`cations for mobile devices and also for retrieving user and
`usage data from Such mobile devices. In at least some
`arrangements, the techniques include analyzing the pre
`existing application in the context of its target platform,
`identifying appropriate points for insertion of the new con
`tent and control logic, and automatically rewriting the appli
`cation to permit the new content to be supplied and control
`logic to be invoked at the appropriate times. An aspect of the
`invention is directed to a business method for the distribu
`tion of content and the apportionment of revenues according
`to the roles of the participants in that distribution.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`0009 FIG. 1 PRIOR ART shows in flow diagram form
`the distribution path of a mobile application from the
`application publisher to the end user mobile device.
`0010 FIG. 2 shows one example of an arrangement of a
`mobile application distribution path in accordance with the
`system of this invention for the purpose of distributing
`advertising content.
`0011
`FIG. 3 is a UML sequence diagram which illus
`trates the rewriting process in accordance with the present
`invention as used in the mobile application distribution prior
`to a request for distribution of the application to a mobile
`device.
`0012 FIG. 4 is a UML sequence diagram which illus
`trates the rewriting process in accordance with the present
`invention as used in the mobile application distribution
`Subsequent to a request for distribution of the application to
`a mobile device.
`
`Playrix Ex. 1006, Page 12 of 28
`
`
`
`US 2007/0174490 A1
`
`Jul. 26, 2007
`
`0013 FIG. 5 is a flow diagram showing the steps of code
`rewriting according to the present invention.
`0014 FIG. 6 is a system block diagram of the instrumen
`tation server showing the analysis and rewriting modules
`and their interaction with a configuration database and
`optional external systems.
`0015 FIG. 7 is a UML sequence diagram which illus
`trates one example of how certain of the components of FIG.
`6 can interact.
`0016 FIG. 8 shows in block diagram form the compo
`nents of a mobile application developed in Java.
`0017 FIG. 9 is a diagram showing the results of applying
`the code rewriting process of FIG. 5 to the mobile applica
`tion of FIG. 8.
`0018 FIG. 10 is a diagram showing a more detailed view
`of the classfile components of FIG. 8.
`0019 FIG. 11 is a diagram showing how the mobile
`application of FIG. 8 can be divided into two applications
`for the purpose of reducing the size of individual applica
`tions.
`0020 FIG. 12 is a diagram showing how the distribution
`package file size of the mobile application of FIG. 8 can be
`reduced by removing resource files and retrieving them
`instead at runtime.
`0021
`FIG. 13 is a UML sequence diagram showing the
`runtime behavior of a mobile application instrumented
`according to the present invention.
`0022 FIG. 14 is a UML sequence diagram showing the
`runtime behavior of a mobile application instrumented
`according to the present invention, in cooperation with a
`portal application.
`0023 FIG. 15 is a UML sequence diagram showing the
`runtime behavior of one or more cooperating mobile appli
`cations instrumented according to the present invention.
`0024 FIG. 16 is a UML sequence diagram showing the
`interaction of the inventory emulator of one embodiment
`with ad content servers to provide targeted ads.
`0025 FIG. 17 illustrates an example of an instrumented
`application as displayed to the user, with presplash and
`postsplash screens.
`0026 FIG. 18 is a diagram showing an example flow of
`applications, advertisements, statistics, and payments in a
`commercial application of this invention.
`0027 FIG. 19 is a diagram showing an example arrange
`ment of the conventional mobile application distribution
`path which has been augmented with the system of this
`invention for the purpose of application billing and Sub
`Scription management.
`0028 FIG. 20 is a diagram showing an example arrange
`ment of the conventional mobile application distribution
`path which has been augmented with the system of this
`invention for the purpose of gathering market research data.
`0029 FIG. 21 is a diagram showing an example arrange
`ment of the conventional mobile application distribution
`path which has been augmented with the system of this
`invention for the purpose of personalizing application con
`tent.
`0030 FIG. 22 is a diagram showing an example arrange
`ment of the conventional mobile application distribution
`
`path which has been augmented with the system of this
`invention for the purpose of communicating game scores to
`a networked score server.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`FIG. 2 shows one example of an arrangement in
`0031
`accordance with the invention for distribution of mobile
`applications. A mobile application publisher (or “devel
`oper) has developed an application, which for purposes of
`clarity herein is referred to as a pre-existing (or “original)
`application 200. In one arrangement, the application pub
`lisher sends the original application to an application distri
`bution server 210, which sends the application to the appli
`cation instrumentation server 220 for processing. It will be
`appreciated that the servers shown herein are illustrated as
`single devices for purposes of clarity, but can comprise one
`or more servers and associated Storage elements, either
`co-located or distributed across a network including the
`internet. Likewise, where a database is described, it will be
`appreciated by those skilled in the art that the database can
`in fact be comprised of one or more databases, located either
`locally or spread across a network including the internet.
`0032. In an alternative arrangement, which is preferable
`in at least some instances, the application publisher sends the
`original application 200 first to the application instrumen
`tation server 220 and then to the distribution server 210.
`Upon receiving an original mobile application, the instru
`mentation server 220 performs the analysis and instrumen
`tation methods which are aspects of this invention. The
`analysis and instrumentation methods include analyzing the
`mobile application in object code form and adding, deleting,
`or modifying the constituent object code instructions. After
`an original application has been subjected to analysis and
`instrumentation, it is referred to for purposes of the present
`invention as an “instrumented application'. The application
`distribution server 210 transmits (distributes) an instru
`mented mobile application to an end user's mobile device
`260 in response to an end user request for download.
`0033. In some arrangements, the analysis and instrumen
`tation methods results in the addition of new control logic to
`the application. One example of Such additional control
`logic is the capability of retrieving, rendering, and reporting
`viewing statistics for advertising content. Placement oppor
`tunities (such as screen regions) for Such advertising content
`are conventionally known as “inventory'. In one arrange
`ment of the present invention, content is added to the
`application during instrumentation, in which case the instru
`mentation server retrieves content from a content manage
`ment server 230, which can include storage for such infor
`mation, or can alternatively receive content from a separate
`content provider 240. Alternatively, content can also be
`retrieved at runtime by the new control logic from a content
`management server, in addition to retrieving content, in
`Some arrangements the new control logic uploads informa
`tion to the content management server Such as content
`viewing statistics. The instrumented application 250, which
`in the illustrated example comprises the original screens
`250A plus new content management code 250B, plus one or
`more new splash screens 250C, is then distributed in a
`conventional manner to a suitable receiver Such as a cellular
`telephone 260 or other similar device over the carrier
`network 270, where the instrumented application 200 is
`provided to the user 280.
`
`Playrix Ex. 1006, Page 13 of 28
`
`
`
`US 2007/0174490 A1
`
`Jul. 26, 2007
`
`0034 Examples of advertising content, as referred to
`above, include both input and output elements. Output
`elements include graphical elements. Such as splash screens,
`which are typically displayed before application execution,
`after application completion, or between application screen
`transitions. Output elements can also include graphical
`elements such as banners, marquees, flyovers, pop-ups, and
`Videos, all of which can be shown at various times during
`application execution, potentially in combination with exist
`ing application graphical content. Output elements can also
`include other known output mechanisms such as audio
`content or tactile content, such as device vibration. Input
`elements typically involve opportunities for users to enter
`data or make choices, and can for example take the form of
`user interface (“UI) text boxes or selection controls. Input
`elements are used, for example, in conjunction with output
`elements to create interactive content, Such as customer
`Surveys or lead generation, such as email acquisition. Input
`elements can also include monitoring of lower-level input
`mechanisms such as touch-sensitive screen, tilt sensor,
`accelerometers, special function buttons, and Switches indi
`cating phone mechanical configuration. Input elements can
`also include monitoring of low-level input and data sources
`that are not typically under direct user control, including for
`example radio signal receiver status and data, GPS chipset
`status and data, RFID transceiver status and data, IR trans
`ceiver status and data, Bluetooth transceiver status and data,
`clock, camera, and light sensors.
`0035. A single application can be instrumented multiple
`times, resulting in multiple instrumented versions of that
`application, and each instrumented version can have Support
`for different advertising content. A single application can be
`instrumented multiple times, over a period of time, such that
`later instrumented versions can have Support for advertising
`content not existing at the time of the prior instrumentations.
`In this manner, as advertising content types (also known as
`ad formats) are created over time, a given application can be
`re-instrumented to include Support for each new ad format.
`0036. The following sections provide further detail on
`aspects of instrumentation initiation, analysis and instru
`mentation methods, object code modification techniques,
`and runtime system interactions for an instrumented mobile
`application.
`Initiation of Application Instrumentation
`0037. As described previously, the instrumentation pro
`cess is initiated when an original application is provided to
`the instrumentation server either by the developer prior to
`application distribution or by the distribution server during
`application distribution.
`0038 FIG. 3 shows one example of an arrangement by
`which an application is instrumented prior to distribution.
`The developer 300 completes development of a mobile
`application and, at 305, sends the original application to the
`instrumentation server 220, which instruments the applica
`tion as shown at 310 according to the methods described
`below and, at 315, returns the instrumented application to
`the developer. Then, at 320, the developer sends the instru
`mented application to the distributor. Finally, the mobile
`device sends a request to the distributor to download the
`application as shown at 325, and the distributor returns the
`instrumented application as shown at 350.
`0039 FIG. 4 shows an alternative arrangement in which
`an application is instrumented during distribution. The
`developer 400 completes development of a mobile applica
`
`tion and, as shown at 405, sends the original application to
`the distributor 410. A mobile device 260 sends a request to
`the distributor 410 to download the application as shown at
`420. The distributor typically knows the mobile device or
`user identity from the context of the download request,
`although other techniques are known in the art and any
`suitable technique can be used. At 425, the distributor sends
`the original application and optionally the mobile device?
`user identity to the instrumentation server 220, which instru
`ments the application as shown at 435 and returns the
`instrumented application as shown at 440. The instrumen
`tation server 220 can instrument the application such that the
`resulting application incorporates information related to the
`distributor(s) identity, user identity, and target mobile
`device. At 445, the distributor then returns the instrumented
`application to the mobile device. In this latter case, the
`instrumentation server has the ability to instrument the
`application for retrieval and/or rendering of ad content that
`is targeted specifically to the requesting mobile device, user,
`and or distributor.
`0040. In a further alternative arrangement, a combination
`of both approaches can be used. Such that an application
`undergoes multiple instrumentation steps, some before and
`Some during the distribution process. An application can
`also be instrumented or re-instrumented after it has been
`downloaded to a mobile device. Such instrumentation is
`performed either by the instrumentation server code execut
`ing on the mobile device; or by uploading the application
`from the device to an instrumentation server, instrumenting
`the application, and then downloading the application back
`to the device. It will be appreciated by those skilled in the
`art that numerous other permutations can be used, and the
`present invention is intended to include each Such permu
`tation.
`Application Instrumentation Flow of Control
`0041
`FIG. 5 shows the application instrumentation flow
`of control, which begins when the instrumentation server
`receives an original application at step 510, as described
`above. In the exemplary arrangement illustrated here, the
`Subsequent steps, described in detail below, include analysis
`of the original application at step 520; acceptance of
`optional control input from external systems at step 530; and
`application modification 540.
`0042 FIG. 6 is a system block diagram of the instrumen
`tation server 220 showing the analysis and rewriting mod
`ules and their interaction with a configuration database and
`optional external systems. An instrumentation manager 600
`component accepts an original application 200 and invokes
`a set of extensible modules, each of which can perform
`either or both analysis and instrumentation functions.
`0043. For the example illustrated in the Figures, the
`analysis and instrumentation modules are categorized as
`follows. “Shim' modules 605 provide a layer on top of
`existing platform APIs and allow the instrumentation code to
`intercept platform API usage as called for by the original
`application. Typically, but not necessarily, there is a shim
`module for each distinct set of platform APIs; for example,
`in one embodiment there is a shim module for each of the
`J2ME CLDC and MIDPAPI sets as well as Shim modules
`for each of the vendor-specific UI APIs, such as those
`provided by Nokia, Motorola and other vendors of cellular
`telephones or similar wireless devices. Content management
`modules 610 provide infrastructure for transferring content
`between a mobile device and a network server and for
`
`Playrix Ex. 1006, Page 14 of 28
`
`
`
`US 2007/0174490 A1
`
`Jul. 26, 2007
`
`managing storage of that content on the mobile device. The
`device-resident storage is typically a persistent storage
`mechanism such as FLASH memory or local disk drive and
`is accessed via file or record oriented platform APIs.
`Examples of typical content management modules include:
`an Ad Manager module, which coordinates reception of
`advertisement content from and transmission of usage data
`to the network server; a Network Transport module, which
`provides an abstraction layer to the Ad Manager module on
`top of the network transport mechanisms available on the
`mobile device, such HTTP, WAP raw TCP, and SMS; and a
`Persistent Storage module, which provides an abstraction
`layer to the Ad Manager module on top of the persistent
`storage mechanisms available on the mobile device. Such as
`J2ME RMS (Record Management System) and JSR-75 File
`Connection. Environment setup modules 615 provide access
`to environmental information, such as user identification and
`GPS location. Other modules can use information provided
`by the environment modules to influence their behavior; for
`example, the Ad Manager module can use GPS location
`information to request location-specific advertising content
`from the network server. Inventory modules provide logic
`for presenting content at specific locations within an appli
`cation, Such as Presplash, Postsplash and Text Marquee.
`Action modules 620 provide logic for executing some set of
`actions in response to user input related to an inventory
`placement, for example Cl