throbber
(19) United States
`(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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket