Obtaining and managing access to content

In one implementation, a computer-implemented method includes receiving, at a computing device and from a computer server system, digital content that is for sale and that is received without having yet been purchased by a user of the computing device; storing the digital content locally on the computing device in a manner that prohibits user access to the digital content; after storing the digital content: receiving user input that indicates the user is purchasing at least a portion of the stored digital content; and in response to the received user input, storing information that indicates the user purchased the portion of the digital content and providing the user with access to the purchased portion of the digital content; and in response to detecting that the computing device is communicatively connected to the computer server system over a network, providing the stored information to the computer server system.

TECHNICAL FIELD

This document generally describes content purchasing on a computing device.

BACKGROUND

A variety of services have been created to allow users to purchase and download media content (e.g., digital books, music, digital articles, digital magazines, and/or videos) onto their computing devices, such as smartphones, media players (e.g., music players, digital e-book readers), tablet computing devices, and/or other computer devices (e.g., desktop computers, laptop computers). For instance, users can purchase and download digital music files on-demand from one or more online music stores, such as APPLE's ITUNES STORE and GOOGLE MUSIC.

For example, a user can provide a request for digital music files with payment information (e.g., user account identifier, credit card information) over one or more networks (e.g., the Internet) to a computer server system implementing a music store. The computer server system can process the payment information (e.g., charge a user's account/credit card) and, if the payment clears, can provide the requested music files to the user's computing device, which can locally store and provide access to the requested music files.

SUMMARY

Content purchasing on a computing device can be provided by prospectively loading unpurchased content, such as media content (e.g., electronic books, digital music, digital videos, digital articles, digital magazines), software (e.g., mobile device applications, software upgrades/add-ins), and/or application content (e.g., new levels for a game), onto a user's computing device when the computing device has network connectivity. Unpurchased content can be stored locally on a user's computing device in a manner that obfuscates and/or makes the unpurchased content inaccessible to a user of the computing device. Unpurchased content can be locally purchased and made accessible on a computing device without purchase information (e.g., user account identifier, credit card information) first having been processed and/or cleared by a computer system providing the unpurchased content, such as when the computing device is unable to communicate with the computer system over one or more networks (e.g., the computing device is not connected to the Internet, the computer system is offline, the computing device has a restricted/limited connection to the Internet). Purchase information can be locally stored and provided once communication with the computer system is established.

For example, a user's mobile computing device can be loaded with new and unpurchased music, movies, and/or electronic books while the computing device is idle and is able to communicate with a content server system over one or more networks (e.g., wireless network, local area network (LAN), the Internet). This unpurchased content can then be locally purchased and made accessible on the computing device regardless of whether the computing device is able to communicate with the content server system. For example, the user can purchase and access the unpurchased content when the computing device is without an Internet connection, such as when the computing device is in “airplane mode” with its wireless transceiver turned off. In another example, the user can have instantaneous access to the unpurchased content (and can avoid having to wait for the unpurchased content to download to the computing device) by purchasing the content even when the computing device is able to communicate with the content server system. Purchase information, such as information identifying the content that is being purchased and a specific source for payment, can be provided to the content server system when the computing device is next able to communicate with the content server system (e.g., Internet connection is reestablished).

In one implementation, a computer-implemented method includes receiving, at a computing device and from a computer server system, digital content that is for sale and that is received without having yet been purchased by a user of the computing device; storing the digital content locally on the computing device in a manner that prohibits user access to the digital content; after storing the digital content on the computing device and while the computing device is not communicatively connected to the computer server system: receiving user input that indicates the user is purchasing at least a portion of the stored digital content; and in response to the received user input, storing information that indicates the user purchased the portion of the digital content and providing the user with access to the purchased portion of the digital content; and in response to detecting that the computing device is communicatively connected to the computer server system over a network, providing the stored information to the computer server system.

In another implementation, a computer-implemented method includes receiving, at a computer server system and from a computing device, a request for digital content that is for sale; identifying digital content to provide to the device; providing the identified digital content to the device before the content has been purchased by a user of the computing device, wherein full copies of the digital content are provided to the computing device and stored locally on the computing device; receiving information that indicates that the user purchased at least a portion of the digital content while the computing device was offline, wherein when the information is received by the computer server system the user has already had access to the portion of the digital content on the computing device; and in response to receiving the information, processing a financial transaction between the user and a party selling the portion of the digital content.

In another implementation, a system includes a mobile computing device; an interface of the mobile computing device to receive, from a computer server system, digital content that is for sale and that is received without having yet been purchased by a user of the computing device; a file system of the mobile computing device arranged to store the digital content locally on the mobile computing device in a manner that prohibits user access to the digital content; and an access module of the mobile computing device to, while the mobile computing device is not communicatively connectable to the computer server system, i) receive user input that indicates the user is purchasing at least a portion of the stored digital content, ii) store purchase information that indicates the user purchased the portion of the digital content, iii) provide the user with access to the purchased portion of the digital content, and iv) provide the stored purchase information to the computer server system in response to detecting that the mobile computing device has become communicatively connected to the computer server system over a network.

The details of one or more embodiments are set forth in the accompanying drawings and the description below. Various advantages can be provided by the disclosed systems and methods. For example, users can purchase and have access to new content even when their computing devices are not able to communicate with a computer system that provides content for sale. In another example, new content can be quickly and readily made accessible on a computing device without the download lag associated with on-demand services. For instance, even when a computing device is able to communicate with a content provider over one or more networks, the computing device can have instantaneous and download delay-free access to new content that was previously loaded onto the computing device as unpurchased content.

In another example, content providers can reach a temporary and ever-changing segment of the market that was previously inaccessible—users who are temporarily without an Internet connection. For instance, users typically do not have access to the Internet for the duration of their airplane flights. If such a user were to want to purchase new content (e.g., music, electronic books, videos) during his/her flight, he/she would typically be unable to do so. However, content providers can reach such a market by providing unpurchased content to users' computing devices and by allowing users to purchase and access such content at their leisure, such as when the users are without an Internet connection on an airplane flight.

In a further example, content providers can be protected from piracy and other misappropriation of unpurchased content through the use of countermeasures to obfuscate and/or to make unpurchased content inaccessible to users. As described in greater detail below, a variety of countermeasures can be used, such as encryption, file segmentation, using hidden file names, and/or marking storage locations at which unpurchased content is being stored as free.

In another example, aggregate network traffic during peak use hours can be decreased. For instance, unpurchased content can be provided to computing devices when there is at least a threshold amount of network bandwidth available for communicating with the computing devices. By providing content to computing devices during periods of low network usage (e.g., during the early hours of the morning) content downloads during periods of potentially high network usage (e.g., during the day and evening) can be decreased. Some content, such as movies, can include a large amount of data (e.g., gigabytes of data) that is transferred to computing devices when purchased. By shifting the time at which such content is provided to computing devices, network strain during peak hours can be decreased.

In a further example, a computer system can “put off” transactions until a future time to free up current processing cycles for other tasks, such as other transactions that are more time-sensitive or urgent. The volume of transaction requests that are received by a computer system can vary over time. To accommodate all client requests during periods of high volume with a threshold level of latency/delay or less, a computer system can delay settling some transactions until a later time, such a time when the computer system has a low volume of transaction requests. For instance, on a day when a computer system is experiencing a high volume of transaction requests, such as reseller may experience during a limited time sale (e.g., “Black Friday” in the United States), the computer system can identify some transactions for settlement in the future even though client computing devices for the transactions are online at the time. Transactions identified for future processing can include transactions for digital content that was previously provided to client computing devices, whereas a computer system can proceed to process other transactions that may need to be immediately fulfilled, such as transactions for physical goods.

Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.

DETAILED DESCRIPTION

Unpurchased content, such as media content (e.g., electronic books, digital music, digital videos, digital articles, digital magazines), software (e.g., mobile device applications, software upgrades/add-ins), and/or application content (e.g., new levels for a game), can be provided to computing devices prospectively when the computing devices are able to communicate with one or more content providers over one or more networks (e.g., wireless networks, the Internet). Such unpurchased content can be stored locally on computing devices and can be purchased by users of the computing devices regardless of whether or not the computing devices are able to communicate with a content provider at the time of purchase. Purchase information, such as an identifier for the content that is being purchased and/or payment information (e.g., credit card number, user account identifier), can be stored locally on a computing device and provided to a content provider when communication with the content provider is re-established over one or more networks.

For example, a user's a smartphone (an example computing device) can provide a request for new and unpurchased media content (e.g., new electronic books and digital music) to a media content provider system when the smartphone is idle. In response, the smartphone can download and locally store unpurchased media content from the media content provider system. A user of the smartphone can instantaneously access this locally stored media content by purchasing it on the smartphone. Purchase information (e.g., credit card information, user account identifier) can be provided to a media content provider system when the smartphone is able to communicate with the media content provider system, which may be at a time when the media content is purchased or at a later time.

By loading unpurchased content onto a user's computing device, the user can have access to new content regardless of whether the computing device is able to communicate with content providers. Additionally, a user can obtain instantaneous access to loaded content once it has been purchased based on the content being stored locally on the user's computing device prior to the time of purchase. Given the size of some content, such as movies which can include several gigabytes of data, being able to access (e.g., play) content instantly without having to first wait for it to be downloaded can be beneficial.

A time at when new unpurchased content is downloaded to a user's computing device can vary. In some implementations, a computing device can provide a request for new and unpurchased content to one or more content provider systems and can receive such content in response. For example, a computing device can be configured to request new and unpurchased content once over a period of time (e.g., once a week, once a month, once every two months) when the computing device is idle (e.g., not being actively used by a user). In another example, a computing device may be configured to request new and unpurchased content when instructed to do so by a user of the computing device (e.g., user requests that a selection of unpurchased content be downloaded in advance of a particular date). In some implementations, a content provider system can periodically ping a computing device to ask whether the computing device would like additional unpurchased content.

In response to receiving a request for unpurchased content, a content provider system can determine whether or not to provide such content to a particular user and/or to the user's computing device. Providing unpurchased content may be viewed as a loan and a content provider system may want to only provide content to a trustworthy user and/or computing device in advance of the content being purchased. Such a determination can be based on a variety of factors, such as a user's and/or device's history with regard to other unpurchased content, a number of completed online transactions that are associated with a user and/or a computing device, a number of refunds requested and/or processed in association with a user and/or computing device, a number of times that a media client application has been activated and/or deactivated (e.g., number of times a user purchased and subsequently uninstalled content before a transaction was processed), whether a computing device is or is not in an unlocked state, and/or whether media client applications are in known good states and/or states that do not permit them or the content they render to be subverted.

Content can be selected for a particular user and/or computing device based on a variety of factors. For instance, a request for content may not specify the type of content that is being requested. A content provider system can make such determinations based on a variety of factors, such as currently popular titles, previous content purchased by a user, content that users have added to a “wish list” (e.g., content that users have indicated they are interested in purchasing at a future date and/or receiving as gifts from others), samples of content that users have previewed (e.g., samples of e-books that users have added to their digital libraries, movie trailers that users have watched), media accessed by a user on third-party websites (e.g., videos viewed on website providing video content, music listened to using an online streaming music service, articles read on a news aggregator website, content viewed on a social network, movie trailers users have watched), content recommended by a user's friends (e.g., content recommended in association with a social network), and/or currently popular titles with other similar users (e.g., other users geographically located near a user, other users of the same or similar age).

A user may provide permission for some information regarding the content on the user's computing device (e.g., identifiers for albums that the user owns, identifiers of applications that are installed on the user's computing device) and/or its use by the user (e.g., the user listens to jazz more than any other type of music, the user spends most of his/her time on the computing device using a particular application) to be provided to a content provider system. Such information can be used by a content provider system to identify content that would be “new” to the user (not already owned by the user) and/or to identify content in which the user is likely to be interested.

Unpurchased content can be stored locally on a computing device so as to obfuscate and/or render the unpurchased content inaccessible to a user of the computing device. For example, a computing device can segment unpurchased content into a plurality of portions which are stored separately in the computing device's file system. In another example, a computing device can encrypt unpurchased content. In a further example, a computing device can mark storage locations at which unpurchased content is being stored as “free”—meaning that it can be allocated by the file system if needed. In another example, a computing device can store unpurchased content as hidden files (e.g., file names starting with a “.”). Various combinations of these or other techniques for locally storing unpurchased content can be used.

Various mechanisms can be used to protect user privacy. For example, information that would otherwise provide the identity of a user can be anonymized when possible. For instance, when attempting to identify current popular content, the identity of other users who purchased content can be made anonymous. In another example, the features discussed in this document can be opt-in features that require user consent, such as providing unpurchased content to a user's computing device.

FIG. 1is a conceptual diagram that depicts an example of unpurchased content being provided to and purchased on a computing device100by a computer system102. In the depicted example, the mobile computing device100receives unpurchased content while the mobile computing device100has network connectivity, the user purchases and accesses the content when the device100has no/limited network connectivity, and the device100provides purchase information to the computer system102when the device100has network connectivity again.

The computing device100can be any of a variety of appropriate computing devices, such as smartphones, tablet computing devices, e-book readers, personal digital assistants (PDA), laptop computers, netbooks, desktop computers, and/or cellular telephones. The computer system102can be any of a variety of appropriate computer system, such as a computer server system (e.g., distributed system of computer servers), a desktop computer, a laptop computer, and/or a cloud computing system.

As indicated by a connection106to the network104, the computing device100is connected to the network104and, through this connection, is able to communicate with the computer system102. The network104can be any of a variety of appropriate computer networks, such as a wireless network (e.g., wifi network, 3G/4G network, Bluetooth connection), a LAN, a wide area network (WAN), a virtual private network (VPN), the Internet, a fiber optic network, or any combination thereof.

As indicated by step A (108), the computer system102provides unpurchased content110to the computing device100over the network104using one or more communication protocols (e.g., file transfer protocol (FTP), transmission control protocol (TCP), internet protocol (IP). The unpurchased content110can be any of a variety of appropriate content, such as digital music (e.g., MP3 files, WAV files, AAC files), electronic books (e.g., PDF files, AMAZON KINDLE files, EPUB files), digital videos (e.g., movies, user-generated videos, MPEG/MPEG-2 video files), software (e.g., mobile device applications, software upgrades, software add-ins), and/or application content (e.g., new levels of a game, templates, macros). The unpurchased content110can be provided to the computing device100in response to a request from the computing device100, as described in greater detail with regard toFIG. 2. The unpurchased content110can be selected based on a variety of factors, such as content that is popular with other users and/or preferences expressed and/or implied by a user of the computing device100, as described in greater detail below with regard toFIG. 2.

The computing device100can receive the content form the computer system102(step B112) and can store the content locally in a storage system of the computing device100(step C114). The content110can be stored in a manner that obfuscates the content110and/or makes the content110inaccessible to a user of the computing device100(e.g., not visible to a file browser application and/or usable by a media player application). As described in greater detail with regard toFIG. 3, a variety of techniques can be used to hide the content110, such as encryption, file segmentation, file naming conventions, and/or releasing the memory locations at which the content110is being locally stored.

After the content110has been received and stored locally on the computing device100, the user of the computing device100may indicate that he/she wants to purchase the content110(step D116). For example, the computing device100can be configured to provide a user interface (e.g., touchscreen user interface, graphical user interface, voice controlled user interface) through which a user can select an option to purchase the content110. In this particular example, when the indication that the user desires to purchase the content is received by the computing device100, the computing device100is no longer connected to the network104, as indicated by the graphic118. For example, the computing device100may have moved from an area where the network104is accessible another location (e.g., on an airplane in-flight) where the network104is not accessible.

To purchase the content110, the user of the computing device100may provide a variety of information to the computing device100, such as payment information (e.g., credit card information, payment account identifier). The user may already have an account associated with the computing device100to which the purchase of the content110can be charged. In such instances, the user may be requested to provide confirmation of the purchase (e.g., confirm the purchase amount) and/or verification of the user's identity (e.g., request that the user enter username and/or password). Payment information and any other confidential/sensitive information can be stored in a secure manner on the computing device100when the computing device100is not connected to the network104. For example, the computing device100can use a public key provided by the computer system102to encrypt and store such confidential/sensitive information. The computer system102can have the corresponding private key, which can be used to decrypt the payment information so as to charge the user for the purchased content.

In some implementations, the computing device100may not obtain and/or store payment information from a user when the computing device100has a token from the computer system102that indicates that the computer system102has a known good payment mechanism for the user on file. For example, a user of the computing device100may have stored payment information on the computer system102in association with a user account. After verifying the payment information (e.g., processing a transaction using the payment information, verifying the payment information with a corresponding financial institution), the computer system102can provide the computing device100with a token (e.g., file, data) that indicates to the computing device100that payment information has already been obtained for the user. In the absence of such a token, the computing device100can obtain payment information from a user as described above.

Once the user has provided sufficient information to purchase the content110(or some portion thereof), the computing device100can provide access to the purchased portion of the content (step E120). Providing access can include moving the purchased portion of the content110into normal storage on the computing device100(e.g., making the purchased content visible in the file system of the computing device100). For example, if the content110was initially stored in segments in the computing device100, access can be provided by combining the segments of the content and storing the content in its original/native form on the computing device100. Various applications can be provided with access to the purchase portion of the content, such as a video player application, an e-book reader application, and/or a music player application.

The computing device100does not have to be disconnected from the network104for the content to be purchased (step D116) or for access to the content to be provided (step E120). The disconnection (118) to the network104is merely provided as an illustration that new and unpurchased content can be purchased and accessed on the computing device100even though a network connection, such as a connection to the network104, is not available. The steps D (116) and E (120) can be performed when the computing device100is connected to the network104and/or another network.

Additionally, the presence of the network104and/or the connection to the computer system102through the network104at a given time does not imply that a transaction purchasing content is processed by the computer system102at that time. Instead, the computer system102may instruct the computing device100to locally handle a transaction and postpone settlement of the transaction by the computer system102until a later time. For example, if the computer system102is experiencing a high volume of transaction requests, the computer system102may postpone settling some transactions that are possible to postpone, such as transactions for pre-loaded content. In another example, the computing device100may be able to detect that the computer system102is experiencing a high volume of requests and may unilaterally decide to postpone processing of a transaction in response. For instance, if the computing device100experiences at least a threshold delay while communicating with the computer system102, such as while attempting to settle a transaction, the computing device100can locally handle the transaction and can attempt to settle the transaction with the computer system102at a later time.

In another example, the computing device100can request particular content from the computer system102through the network104and the computer system102can provide the particular content without first processing a payment for the content. The computer system102may limit providing such unpurchased content to instances where the computing device100and/or a user of the computing device100are determined to have at least a threshold level of trustworthiness (e.g., repeat customer with previous transaction that were successfully processed, customer with verified purchase information on file). The computer system102can provide the unpurchased content to the computing device100even if the computer system102is having difficulty and/or slow to process transactions, thus allowing a user to purchase content regardless of the state of the computer system102.

Referring back to the example depicted inFIG. 1, a network connection can be detected (step F122) and information regarding the purchase of at least a portion of the content110can be provided to the computer system102(step G126). For instance, the computing device100can establish a connection124with the network104. This connection124can be detected and can cause the information regarding the purchase to be provided to the computer system102. The computing device100can provide purchase information128to the computer system102. The purchase information128can include a variety of information to identify a purchaser, the item being purchased, and a method of payment for the purchase. For example, the purchase information can include one or more of: a content identifier130(e.g., serial number for the content, unique identifier) to identify the one or more portions of the content110that were purchased on the computing device100, a device/user identifier132(e.g., username, MAC address) to identify the purchaser and/or purchasing device, and/or a payment identifier134(e.g., credit card information, user payment account identifier) to provide a method of payment for the purchase.

The computer system102can process the purchase information128and can provide a response to the computing device100that indicates whether or not the payment was successful. If the payment was successful, the computer system102can provide verification that the payment was successful, which can permit the computing device100to continue using the purchased content unimpeded. If the payment was unsuccessful (e.g., fake credit card number provided in the purchase information128), the computer system102can provide an indication of the unsuccessful payment to the computing device100, which can cause the computing device100to prompt the user for different/supplemental payment information, to re-hide the content110, and/or to delete the purchased content from the computing device100.

The computing device100may also be configured to delete and/or restrict access (e.g., re-hide the content110) to purchased content for which the payment has not been processed within a threshold amount of time (e.g., one day, one week, one month) of the initial purchase at step D (116). For example, if a user were to purchase content while the computing device100is offline (e.g., not connected to the network104) and not reconnect to the network104for over a month, the computing device100may delete/restrict access to the purchased content that the user has been able to access over the past month. In some implementations, the user may be provided the opportunity to either connect the device100to a network or to manually enter a code verifying payment for the purchased content before the purchased content is deleted/restricted.

FIG. 2is a conceptual diagram that depicts an example of unpurchased content being identified and provided to a computing device200by a computer system202. The example depicted inFIG. 2depicts some features that can occur prior to step A (108), such as determining whether to provide the computing device200with unpurchased content and identifying content to provide to the computing device200. The computing device200can be similar to the computing device100described above with regard toFIG. 1. The computer system202can be similar to the computer system102described above with regard toFIG. 1.

The computing device200can provide a request for unpurchased content to the computer system202(step A204). Such a request can include information that identifies the computing device itself200and/or a user associated with the computing device200, such as the user/device identifier206. Such a request may also include information that identifies a type of content that is being requested, such a genre of movie. However, the request can be unspecific in the sense that it does not identify a specific title that is being requested. The request may also include information that identifies at least some of the content that is already stored on the computing device200, so that duplicate content is not being provided by the computer system202. In some implementations, the information identifying the content on the computing device200and/or the information identifying a preferred type of content may already be stored by the computer system202(with the user's consent) and may be retrievable with the user/device identifier206.

The computing device200can generate the request in a variety of ways. For instance, the computing device200can be configured to request new content from the computer system202periodically (e.g., every day, every week, every month, every six months) when the computing device200is idle and/or is unlikely to be used for at least a threshold amount of time (e.g., unlikely to be used for the next hour). For example, the computing device200may choose a time in the early morning to provide the request204to the computer system202, when the device200is unlikely to be used for a period of time. In another example, the computing device200may be manually instructed by a user of the device200to request new content from the computer system202.

In response to receiving the request, the computer system202can determine whether to provide unpurchased content to the user and/or computing device200(step B208). Such a determination can be based on a variety of factors, such as information indicating whether the user has previously attempted to not pay for content provided by the computer system202. For example, if the user of the computing device200had previously provided bad credit card numbers to the computer system202after having a threshold amount of time to access the content (e.g., access for at least one hour, 6 hours, 12 hours, one day, one week), the user may be deemed untrustworthy and can be denied future unpurchased content. In another example, if the computing device200has had unbroken/regular communication with the computer system202over one or more networks without applications being re-installed and/or the computing device200having been restored to its original factory settings (e.g., personal content and settings having been deleted from the computing device200), the computing device200can be determined to be trustworthy and can be provided unpurchased content.

The computer system202can use a content repository210that stores content212(e.g., music files, e-book files, video files, software, software content) and that includes logs identifying unpurchased content that was provided to computing devices (unpurchased content log214) and purchased content (purchased content log216). The unpurchased content log214can include a list and timestamp of the unpurchased content that was provided to each computing device and/or user. The purchased content log216can include a list and timestamp of the content items for which payment information was successfully and unsuccessfully processed. For instance, the log216can indicate when users have provided valid and invalid payment information. The logs214and216can be used by the computer system202to determine whether to provide unpurchased content to the computing device200. For instance, the unpurchased content logs214can be cross-referenced with the purchased content log216to determine whether a user is likely to purchase content (e.g., identify frequency of purchase), how long unpurchased content is typically with a user before it is purchased (e.g., average pendency between content being provided and purchased or deleted on the computing device200), and/or how frequently the user provides valid payment information (e.g., ratio of valid payment information to invalid payment information).

In some implementations, the computer system202may require a user of the computing device200to establish a verified payment account with the computer system202before the computer system202will provide unpurchased content to the computing device200. For example, the computer system202may require a verified credit card or bank account number to be on file in association with the computing device200before providing unpurchased content to the computing device200.

After determining that the computing device200is to receive unpurchased content, the computer system202can identify content to provide to the computing device200(step C218). The computer system202can use a variety of information to identify content to provide to the computing device200, such as information contained in a user preference data repository220. The user preference data repository220can include information222identifying express interests of users, such as interests that a user of the computing device200may have explicitly identified when setting-up an account with the computer system202(e.g., “I like mystery novels,” “I dislike country music”).

The user preference data repository220can also include information224identifying inferred interests of users which may be determined from one or more logs226identifying content that users have accessed from content providers. For example, the content access logs226can be an aggregation of a user's online and/or offline activity, such as watching videos and/or listening to music. With a user's consent, such information indicating user preference may be accessed and used to infer user interests and to identify relevant content to provide to a user. Additionally or alternatively, cross-referencing the unpurchased content log214and the purchased content log216can provide inferences as to the types of content that the user of the computing device200liked and didn't like, and can be used to identify additional content to provide to the computing device200.

The user preference data repository220can also include information regarding recommendations228that users have provided to each other. For example, users on a social network may recommend content to their friends by selecting an endorsement control, such as a “like” button or a “+1” button associated with the content. In another example, users can recommend content by posting links to the content on pages of a social network. Such recommendations can be used by the computer system202to identify content as well.

The computer system202may also use information regarding popular content when identifying content to provide to the computing device200. For instance, the computer system202can use the purchased content logs216to identify the most commonly sold content to identify content to provide to the computing device200.

The computer system202can retrieve the identified content from the content repository210and can provide the content232to the computing device (step D230), similar to the step A (108) described above with regard toFIG. 1.

FIG. 3is a conceptual diagram that depicts an example of local storage of unpurchased content on a computing device.FIG. 3depicts an example technique for obfuscating and/or restricting access to unpurchased content that is being locally stored on a computing device. A music file300is presented as an example of unpurchased content that is being stored by a computing device, such as the computing devices100and200described above with regard toFIGS. 1 and 2, respectively.

As indicated by step A (302), the music file300can be encrypted. A variety of appropriate encryption techniques can be used to encrypt the music file, such as public key cryptography. Encryption will cause the data in the music file300to appear jumbled to a music application that attempts to play an encrypted version of the music file300. Vulnerabilities of encryption include local storage in a computing device of a key to decipher the encrypted music file. A variety of techniques may be used to overcome this obstacle, such as using a hardware-encoded encryption technique where the key (or a technique to generate the key) is hardwired and/or storing the key in a portion of RAM that is accessible only to operating system processes.

The music file300can be segmented and stored in a local storage system306of a computing device (step B304). The local storage system306can be any of a variety of appropriate storage systems, such as a hard disk drive and/or a solid state hard drive. In the present example, the music file300is segmented into three portions—a first segment308, a second segment310, and a third segment312. Any number of segments can be used, such as two, three, four, ten, etc. In the depicted example, the segments308-312are stored as separate files in separate portions of the logical storage system306.

Information that can be used to piece the unpurchased content information back together can be stored in an unpurchased content information repository314, which can include segment/storage information316and/or encryption information318. The segment/storage information316can indicate a variety of information regarding how the music file300was segmented, such as a number of segments that were used, an order of the segments, and/or addresses (logical and/or physical) for the segments in the local storage system306. The encryption information318can include information identifying a type of encryption algorithm that was used and/or one or more keys that can be used to decipher the encrypted data.

The local storage system306can be paired with a directory/index320that is used by the file system to identify existing files that are stored in the local storage system306and to identify free storage locations where new files can be stored. As an added layer of obscurity, the portions of the local storage system306that are storing the unpurchased music file segments308-312can be designated as free—meaning that they appear to not store data that is currently being used. Such a designation can further hide the unpurchased music file300.

Although the encryption, segmentation, and marking of storage locations as free are discussed together, any combination of these techniques can be used to obfuscate unpurchased media files on a computing device.

FIG. 4is an example system400that includes a computer system402to provide unpurchased content to a computing device404. The computer system402can be similar to the computer system102as described above with regard toFIG. 1and/or the computer system202as described above with regard toFIG. 2. The computing device404can be similar to the computing device100described above with regard toFIG. 1and/or the computing device200described above with regard toFIG. 2.

The computer system402includes a permission module406that determines whether a particular user and/or computing device, such as the computing device404, has permission to receive unpurchased content. The permission module406can make such a determination based on factors similar to those discussed above with regard to step B (208) inFIG. 2. The permission module can use information stored in a content repository408to make such determinations as well, such as logs of unpurchased content that was provided to users and purchases of such content that were successfully and/or unsuccessfully made by users of such content. The content repository408can be similar to the content repository210discussed above with regard toFIG. 2.

The computer system402also includes a content identification component410that is configured to identify content to provide to the computing device404. The content identification component410can make such an identification using the some or all of the factors discussed above with regard to step C (218) inFIG. 2. The content identification component410can use information stored in a user preference data repository412and/or information stored in a content repository408. The user preference data repository412can be similar to the user preference data repository220discussed above with regard toFIG. 2.

The computer system402also includes an input/output (I/O) interface414that sends and receives data for the computer system402over a network416. The network416can include one or more communications networks, such as the Internet, a wireless network, a LAN, a WAN, and/or a VPN. The computer system402can use the I/O interface414to transmit content over the network416to the computing device404.

The computing device404includes an I/O interface418that sends and receives information over the network416, such as unpurchased content provided by the computer system402.

The computing device404also includes a request module420to manage sending requests for unpurchased content to the computer system402. The request module420can determine when to provide requests to the computer system402similar to the determination discussed with regard to step A (204) inFIG. 2.

The computing device404also includes a file system422that manages operation (e.g., reads, writes, memory allocation requests) of one or more storage devices426for the computing device404. The file system422includes an unpurchased content storage manager424that manages storage of unpurchased content in the one or more storage devices426. For example, the unpurchased content storage manager424can attempt to obfuscate the location of locally stored and unpurchased content using one or more of the techniques discussed with regard toFIG. 3. The one or more storage devices426can store both unpurchased content428and purchased content430, and can be similar to the local storage system306discussed above with regard toFIG. 3.

The computing device404can also include a purchase module432that manages the purchasing of content and/or reporting purchase information to the computer system402once a network connection allowing communication to the computer system402is available (e.g., the network416). The purchase module432can perform operations similar to those discussed above with regard to step F (122) and step G (126) inFIG. 1. In particular, the purchase module432can obtain, securely store, and provide purchase information to the computer system402over the network416when a connection to the network416is next available, or at another time, such as a time of low activity. In response to receiving purchase information for a particular portion of the unpurchased content428, the purchase module432can instruct the file system422and/or the unpurchased content storage manager424to make the purchased content fully accessible as the purchased content430on the computing device404. Even after made the purchased content430is accessible on the computing device404, there may be various software and/or hardware imposed restrictions on its use, such as digital rights management code.

The computing device404can also include an access module434to temporarily, and in some instances permanently, restrict and/or remove access to purchased content430when payment information for the purchased content430(which was previously the unpurchased content428) was declined/rejected by the computer system402. For example, if a user provides invalid payment information for the unpurchased content428when the computing device404is not connected to the network416and thereby obtains access to the unpurchased content428(e.g., the unpurchased content428is converted to the purchased and accessible content430), the access module434can restrict access to and/or delete the improperly purchased content in response to receiving notification from the computer system402that the payment information was invalid.

The access module434can restrict and/or remove access to content that was purchased while the computing device404was offline (e.g., not connected to the network416, not able to communicate with the computer system402) in other scenarios as well. For example, if at least a threshold amount of time (e.g., 6 hours, one day, one week) has passed since the unpurchased content428was purchased without corresponding purchase information being provided to the computer system402for processing, the computing device404can notify the user of the need to connect the computing device404to the network416to transmit the purchase information to the computer system402. Additionally and/or alternatively, the access module434can restrict access (using one or more of the techniques discussed above with regard toFIGS. 1-3) to the content until the payment information is provided to and processed by the computer system402. The access module434may also delete unpurchased content428that has been purchased but for which the purchase information has not been processed by the computer system402and/or unpurchased content428that has been stored locally on the computing device404for at least a threshold amount of time (e.g., one week, one month, three months) without having been purchased by a user.

FIGS. 5A-Bare flowcharts depicting an example process500for providing unpurchased content to a computing device502. The process500can be preformed in-part by the computing device502and in-part by a content computer system504. The computing device502can be any of a variety of appropriate computing devices, such as the computing device100, the computing device200, and/or the computing device404. The content computer system504can be any of a variety of appropriate computer system, such as the computer system102, the computer system202, and/or the computer system402.

Referring toFIG. 5A, in some implementations user input can be received at the computing device502and can request unpurchased content be loaded onto the computing device502(506). For instance, a user embarking on a trip may want to load unpurchased content onto some of the free storage space of the computing device502before departing for the trip. Such a user can instruct the computing device502through one or more input devices (e.g., touchscreen, keyboard, mouse, track pad/ball, microphone) to obtain unpurchased content from the content computer system504. In such implementations, the computing device502can provide a request for unpurchased content to the content computer system504(510), similar to the request204discussed with regard toFIG. 2.

In some implementations, the computing device502can determine whether to automatically request unpurchased content from the content computer system506without being prompted to do so by a user (508). For example, the computing device502can periodically (e.g., every day, week, month) check for new and unpurchased content to load onto the computing device502. Such configurations may be user specified—a user of the computing device502can specify that the device should check for new unpurchased content to load on the computing device502once a month. The computing device502can wait to request such content from the content computer system504until a period of time when the computing device502is likely to be idle (not used by a user), such as in the early morning.

The computing device502may also be configured to wait until the end of a user's data cycle and may only provide a request for unpurchased content when the user has excess available bandwidth on the user's fixed/limited bandwidth plan. For instance, if a user has a wireless data plan (e.g., 3G/4G data plan) that provides a capped amount of data per month (e.g., 2 GB, 4 GB) at a fixed rate before additional fees are imposed, the computing device502can wait until the last day of the billing cycle to determine whether or not to provide a request to the content computer system504. Such a determination can be based on whether the computing device502has unused capacity on their plan that would otherwise be lost. For instance, if the computing device502has a monthly data plan where the first 2 GB of data are provided at a fixed fee (e.g., $30) and at the end of the month the computing device502has used only 1 GB of the plan allowance, then a determination can be made to obtain unpurchased content due to the available data plan capacity at the end of the billing cycle. In contrast, were the computing device502to be at the plan limit at the end of the month, the computing device502can determine that unpurchased content should not be requested from the content computer system504.

The content computer system504can receive a request for unpurchased content from the computing device502(512), and can determine whether to provide unpurchased content to the computing device502and/or a user associated with the computing device502(514). Such a determination can be made based on a variety of factors, such as information indicating whether a user associated with the computing device502is trustworthy. For example, the permission module406of the computer system402can determine whether to provide unpurchased content to the computing device404. In another example, the computer system202can determine whether to provide unpurchased content to the computing device200at step B (208), as described with regard toFIG. 2.

In response to determining that the computing device502is permitted to receive unpurchased content, the content computer system502can identify unpurchased content to provide to the computing device502(516). Such a determination can be based on a variety of information associated with the computing device502and/or a user of the computing device502, such as interests expressed by the user and/or the computing device502(e.g., the user set-up his/her media preferences as part of an account with the content computer system504), content that was previously purchased by the user and/or computing device502, content accessed on third-party websites (e.g., videos viewed, music listened to), and/or recommendations from acquaintances of the user of the computing device502. For example, the content identification component410can identify content to provide to the computing device404, and the computer system202can identify content to provide to the computing device200at step C (218), as described with regard toFIG. 2.

The content computer system504can provide the identified unpurchased content (518) to the computing device502over one or more available network connections, such as the network416described with regard toFIG. 4and/or the network104described with regard toFIG. 1. The computing device520can receive the unpurchased content (520) and can locally store the unpurchased content on the computing device502(522). For example, the unpurchased content storage manager424of the computing device404can store the unpurchased content428in the storage device426. A variety of techniques can be used to obfuscate and/or restrict access to the unpurchased content on the computing device504, such as the encrypting the content (e.g., encrypting the music file at step A (302)), segmenting the content (e.g., segmenting the music file at step B (304)), and/or marking the content as free in a storage system.

At some point in time after receiving and storing the unpurchased content on the computing device502, the computing device502can receive user input indicating a request to purchase and access the stored content (524). The computing device502can receive payment information (e.g., credit card number, payment account identifier) and, if a network connection to the content computer system504is unavailable, can store such information with other identifying information (e.g., content identifier, timestamp for purchase, user/computing device identifier) as purchase information on the computing device502(526). Access to the stored content can be provided in response to receiving the purchase request and obtaining payment information/storing purchase information (528). Providing access can include removing any restrictions that may have been used to obfuscate the content in local storage, such as combining the segments for the content back into the content's original file format. If a network connection is available, the computing device502can provide the purchase information to the content computer system504and, in response to receiving verification that the purchase information has been successfully processed, can provide access to the stored content (528).

Referring toFIG. 5B, in some implementations where the a network connection is unavailable at the time the request to purchase is received (524) and access to the content is provided (528), the computing device502can determine whether a threshold amount of time has elapsed since the content was purchased (530). For example, the computing device502can be configured to only permit a user to have access to content for a threshold period of time (e.g., one hour, five hours, one day, two days, one week) before processing of the payment information is needed for the access to continue. In response to determining that a threshold amount of time has elapsed, a notice can be provided to a user of the computing device502that access will be removed unless a variety of remedial actions are taken, such as establishing a network connection with the content computer system504and/or manually entering a payment confirmation code into the computing device502. If no such remedial action is taken within a threshold amount of time (e.g., one minute, ten minutes, one hour, one day), access to the content can be restricted and/or the content can be deleted from local storage on the computing device502(532).

After providing access to the content when a network connection with the content computer system504was unavailable (528) and/or providing a notice to a user to take remedial action for the payment information to be processed (532), a network connection can be detected by the computing device502(536). For example, the I/O interface418of the computing device404can detect the availability of the network416, such as a wireless network that is within range of the computing device404.

In response to detecting the connection, the purchase information can be provided to the content computer system504over the detected network (538) and can be received by the content computer system504(540). The content computer system504can process the purchase information (542), such as attempting to debit a payment account that is provided with the purchase information. If the payment method is successful, payment confirmation can be provided by the content computer system504(544) to and received by the computing device502(546). If the payment information is invalid, notification of the invalid payment information can be provided by the content computer system504to the computing device502(548). In response to receiving such an indication, the computing device502can provide a notice to the user of the computing device502of the invalid payment method (532) and/or can restrict access to or delete the content for which the payment method was invalid (534).

The memory604stores information within the computing device600. In one implementation, the memory604is a volatile memory unit or units. In another implementation, the memory604is a non-volatile memory unit or units. The memory604may also be another form of computer-readable medium, such as a magnetic or optical disk.

The processor652can execute instructions within the computing device650, including instructions stored in the memory664. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. Additionally, the processor may be implemented using any of a number of architectures. For example, the processor410may be a CISC (Complex Instruction Set Computers) processor, a RISC (Reduced Instruction Set Computer) processor, or a MISC (Minimal Instruction Set Computer) processor. The processor may provide, for example, for coordination of the other components of the device650, such as control of user interfaces, applications run by device650, and wireless communication by device650.

Processor652may communicate with a user through control interface658and display interface656coupled to a display654. The display654may be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface656may comprise appropriate circuitry for driving the display654to present graphical and other information to a user. The control interface658may receive commands from a user and convert them for submission to the processor652. In addition, an external interface662may be provide in communication with processor652, so as to enable near area communication of device650with other devices. External interface662may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory664stores information within the computing device650. The memory664can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory674may also be provided and connected to device650through expansion interface672, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory674may provide extra storage space for device650, or may also store applications or other information for device650. Specifically, expansion memory674may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory674may be provide as a security module for device650, and may be programmed with instructions that permit secure use of device650. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory664, expansion memory674, or memory on processor652that may be received, for example, over transceiver668or external interface662.

Although a few implementations have been described in detail above, other modifications are possible. Moreover, other mechanisms for providing unpurchased content to a computing device may be used. In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. Other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.