CN102130907A - Developer phone registration - Google Patents
Developer phone registration Download PDFInfo
- Publication number
- CN102130907A CN102130907A CN201110031352XA CN201110031352A CN102130907A CN 102130907 A CN102130907 A CN 102130907A CN 201110031352X A CN201110031352X A CN 201110031352XA CN 201110031352 A CN201110031352 A CN 201110031352A CN 102130907 A CN102130907 A CN 102130907A
- Authority
- CN
- China
- Prior art keywords
- terminal
- developer
- account
- computer
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
相关申请的交叉引用 Cross References to Related Applications
本申请要求2010年1月20日提交的美国临时申请No.61/296,621的权益,该临时申请通过援引纳入于此。 This application claims the benefit of US Provisional Application No. 61/296,621, filed January 20, 2010, which is hereby incorporated by reference. the
技术领域technical field
本发明涉及电话注册技术。The invention relates to telephone registration technology.
背景技术Background technique
诸如智能电话等便携式终端由于其运行第三方应用程序的能力而已变得日益流行,该第三方应用程序通常是免费或在支付很小费用下从网站下载到终端的。此类应用程序可包括游戏、利用地理位置服务的程序、教育应用程序等。终端制造商通过使软件开发工具可为软件开发者所用来鼓励对这些应用程序的开发。此类工具可包括模拟终端的功能和性能的终端仿真器,以及用于在商业发布应用程序之前部署、执行、调试、和共享该应用程序的工具。在大多数情形中,在应用程序的发布之前在终端自身上测试应用程序。然而,终端通常被装运,从而使得仅可从获批准(例如,获信任或授权)的源部署和执行应用程序。开发者向制造商进行注册并将其完成的应用程序提交到制造商的网站,在那里应用程序被检阅并批准以进行分发。当开发者将应用程序下载到终端时,用数字签名密码地签署应用程序,并且在允许应用程序运行之前,终端使用签名验证机制验证应用程序被批准。Portable terminals such as smartphones have become increasingly popular due to their ability to run third-party applications, which are usually downloaded to the terminal from a website for free or for a small fee. Such applications may include games, programs that utilize geo-location services, educational applications, etc. Terminal manufacturers encourage the development of these applications by making software development tools available to software developers. Such tools may include terminal emulators, which emulate the functionality and capabilities of a terminal, as well as tools for deploying, executing, debugging, and sharing an application prior to its commercial release. In most cases, the application is tested on the terminal itself prior to its release. However, endpoints are typically shipped such that applications can only be deployed and executed from approved (eg, trusted or authorized) sources. Developers register with the manufacturer and submit their completed applications to the manufacturer's website, where they are reviewed and approved for distribution. When a developer downloads an application to the terminal, the application is cryptographically signed with a digital signature, and the terminal verifies that the application is approved using a signature verification mechanism before allowing the application to run.
然而,在开发过程中使用此类认证机制会使得软件开发者的工作更加困难。通常,认证机制是复杂且易出错的基于证书的认证机制,该机制要求开发者管理终端与其运行软件开发工具的计算机之间的关系。另一方面,如果开发者被准许在终端上部署和运行应用程序的不受限能力,则这使得更易于例如使用应用程序侧加载来加载和运行未授权应用程序,从而使盗版得到助长。此外, 当开发者使用不同计算机来运行用于不同终端的软件开发工具时,提出了管理挑战。存在一台计算机-众多终端的管理挑战、众多计算机-一个终端的管理挑战以及众多计算机-众多终端的管理挑战。However, using such authentication mechanisms during development can make the software developer's job more difficult. Typically, the authentication mechanism is a complex and error-prone certificate-based authentication mechanism that requires the developer to manage the relationship between the endpoint and the computer on which the software development tool is running. On the other hand, if developers are granted an unlimited ability to deploy and run applications on the terminal, this makes it easier to load and run unauthorized applications, for example using application sideloading, thereby facilitating piracy. Furthermore, management challenges are presented when developers use different computers to run software development tools for different terminals. There are one computer-many endpoints management challenges, many computers-one endpoints management challenges, and many computers-many endpoints management challenges.
发明内容Contents of the invention
提供了准许经认证、注册的软件开发者向诸如基于web的服务等服务注册智能电话或其他终端的技术。一旦终端被注册,其变成被激活以便部署、执行、调试和共享未经签署的应用程序,例如,不包括密码签名的应用程序。对终端的注册可被绑定到开发者的注册的持续期。Techniques are provided that allow certified, registered software developers to register smartphones or other terminals with services, such as web-based services. Once an endpoint is registered, it becomes enabled to deploy, execute, debug and share unsigned applications, eg, applications that do not include cryptographic signatures. The registration to the terminal can be tied to the duration of the developer's registration.
终端可以是智能电话,其是具有高级能力并提供类似于个人计算机(PC)的特征的移动电话或蜂窝小区电话。典型地,智能电话运行向应用程序开发者提供标准化接口和平台的操作系统软件。常常提供诸如电子邮电、因特网接入、电子书阅读器能力、屏幕上或物理键盘以及缆线连接器等特征。更一般地,终端可以是任何类型的具有网络连通性和应用程序平台的终端,其中应用程序的分发需要受到控制。例如,经由缆线或无线链路将终端连接到开发者的计算机,后者运行软件开发工具。软件开发工具提供允许开发者选择和注册终端的用户界面。A terminal may be a smartphone, which is a mobile phone or a cell phone with advanced capabilities and offering features similar to a personal computer (PC). Typically, a smartphone runs operating system software that provides a standardized interface and platform to application developers. Features such as e-mail, Internet access, e-book reader capabilities, on-screen or physical keyboards, and cable connectors are often provided. More generally, a terminal can be any type of terminal with network connectivity and an application platform where the distribution of applications needs to be controlled. For example, the terminal is connected via a cable or wireless link to a developer's computer, which runs software development tools. The software development tool provides a user interface that allows developers to select and register terminals.
在一个实施例中,由一个或多个服务器执行一种用于管理具有网络通信能力的终端的处理器实现的方法。一个或多个服务器向应用程序开发者提供服务。方法包括从开发者接收用于注册为软件开发者以开发用于终端的应用程序的注册信息。开发者可在开发者准备好将应用程序部署到终端之前的某一时间预先注册,或者可结合将应用程序部署到终端来注册。注册信息可包括例如开发者名称或电子邮件地址等开发者标识符,以及例如口令等开发者认证信息/凭证。一个或多个服务器将注册信息存储在帐户中。一个或多个服务器向开发者的计算机发送指示开发者已被一个或多个服务器认证的数据。开发者的计算机经由在终端与开发者的计算机之间建立的通信链路向终端提供该数据。这可被自动地执行,而无需用户介入,或者响应于由开发者经由开发者的计算机处的用户界面输入的命令来执行。In one embodiment, a processor-implemented method for managing a terminal with network communication capabilities is performed by one or more servers. One or more servers provide services to application developers. The method includes receiving registration information from a developer for registering as a software developer to develop an application program for a terminal. The developer may pre-register sometime before the developer is ready to deploy the application to the endpoint, or may register in conjunction with deploying the application to the endpoint. Registration information may include a developer identifier, such as developer name or email address, and developer authentication information/credentials, such as a password. One or more servers store registration information in accounts. The one or more servers send data to the developer's computer indicating that the developer has been authenticated by the one or more servers. The developer's computer provides the data to the terminal via a communications link established between the terminal and the developer's computer. This can be performed automatically, without user intervention, or in response to commands entered by the developer via a user interface at the developer's computer.
接着,终端发起与服务器的通信。服务器从在终端上运行的客户机软件接 收解锁终端的请求,其中请求包括该数据和终端的标识符。服务将数据与开发者的帐户进行关联,并且若被许可,则授权解锁。服务可进行检查以确保帐户尚未被取消以及帐户的最大容许解锁终端数目尚未被超过。经由请求和注册信息,如果对终端的解锁被授权,则一个或多个服务器向终端发送用于解锁终端的命令,作为响应,在终端中持续(维持)解锁状态。命令可连同期满日期包括例如许可证文件或持久令牌,比如诸如注册密钥等经加密标识符。终端持续解锁状态直至期满日期。Next, the terminal initiates communication with the server. The server receives a request to unlock the terminal from client software running on the terminal, wherein the request includes the data and the terminal's identifier. The service associates the data with the developer's account and, if permitted, authorizes unlocking. The service may check to ensure that the account has not been canceled and the account's maximum allowed number of unlocked terminals has not been exceeded. Via the request and registration information, if the unlocking of the terminal is authorized, one or more servers send to the terminal a command to unlock the terminal, and in response, persist (maintain) the unlocked state in the terminal. The command may include, for example, a license file or a persistent token, such as an encrypted identifier such as a registration key, along with an expiration date. The terminal remains unlocked until the expiration date.
解锁状态允许将由软件开发工具部署的未经签署的应用程序部署到终端并在终端上执行。在一种可能的办法中,在解锁状态中,经注册的开发者或者经注册或未经注册的任何其他人可自由且重复地将一个或多个未经签署的应用程序的不同编译版本或版本部署到终端,以使得在无需验证应用程序的数字签名的情况下部署和运行应用程序。此办法极大地有助于开发者可工作的速度,因为开发者无需管理终端与开发者或开发者的计算机之间的关系以及相关联认证机制。在要求在部署和运行所有应用程序之前认证这些应用程序的高度安全办法与在无需任何开发者或终端注册的情况下允许运行任何未经签署的应用程序的开放接入方法之间提供了最佳的平衡。The unlocked state allows unsigned applications deployed by software development tools to be deployed to and executed on the endpoint. In one possible approach, in the unlocked state, a registered developer, or any other person, registered or not, may freely and repeatedly copy different compiled versions of one or more unsigned applications or Versions are deployed to endpoints, enabling applications to be deployed and run without verifying the application's digital signature. This approach greatly contributes to the speed at which the developer can work because the developer does not need to manage the relationship between the terminal and the developer or the developer's computer and the associated authentication mechanisms. Provides the best compromise between a highly secure approach that requires all applications to be authenticated before they are deployed and run, and an open access approach that allows any unsigned application to run without requiring any developer or endpoint registration. balance.
提供本概要以用简化形式介绍在下面的说明书中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。This Summary is provided to introduce a selection of concepts in a simplified form that are further described in the specification below. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
附图说明Description of drawings
图1描绘了包括开发者的计算机、其上将部署应用程序的终端、以及开发者门户的一个或多个服务器的网络。Figure 1 depicts a network comprising a developer's computer, an endpoint on which an application is to be deployed, and one or more servers of a developer portal.
图2描述了用于与图1的网络联用的方法,其中开发者和终端向开发者门户的服务进行注册,在终端上部署并运行应用程序,且注册条款被强制实施。Figure 2 depicts a method for use with the network of Figure 1, where developers and terminals register with the developer portal's services, applications are deployed and run on the terminals, and registration terms are enforced.
图3A描绘了图2的步骤200的进一步细节,其中开发者向开发者门户的服务进行注册。FIG. 3A depicts further details of
图3B描绘了与图3A的步骤304相关联的示例用户界面,其中开发者提供注册信息。FIG. 3B depicts an example user interface associated with step 304 of FIG. 3A in which a developer provides registration information.
图4A描绘了图2的步骤210的进一步细节,其中开发者向开发者门户的服务注册一个或多个终端以解锁这一个或多个终端。FIG. 4A depicts further details of step 210 of FIG. 2 , wherein a developer registers one or more terminals with the developer portal's service to unlock the one or more terminals.
图4B描绘了图4A的判决步骤414的进一步细节,其中服务决定是否授权对终端的解锁。FIG. 4B depicts further details of
图4C和4D描绘了与图4A的步骤405相关联的示例用户界面,开发者藉由其选择一个或多个终端来进行注册。4C and 4D depict example user interfaces associated with step 405 of FIG. 4A by which a developer selects one or more terminals for registration.
图4E描绘了与图4A的步骤421相关联的示例用户界面,该接口提供了指示终端已被解锁的报告。FIG. 4E depicts an example user interface associated with step 421 of FIG. 4A that provides a report indicating that the terminal has been unlocked.
图4F描绘了与图4A的步骤421相关联的示例用户界面,该接口提供了指示与开发者帐户相关联的所有已被解锁的终端的报告。FIG. 4F depicts an example user interface associated with step 421 of FIG. 4A that provides a report indicating all unlocked terminals associated with a developer account.
图4G描绘了图2的步骤210的过程流程图,其中开发者向开发者门户的服务注册一个或多个终端以解锁这一个或多个终端。FIG. 4G depicts a process flow diagram of step 210 of FIG. 2 , wherein a developer registers one or more terminals with the service of the developer portal to unlock the one or more terminals.
图5描绘了图2的步骤220的进一步细节,其中应用程序被部署到被解锁终端并在其上运行。FIG. 5 depicts further details of step 220 of FIG. 2, wherein the application is deployed to and runs on the unlocked terminal.
图6A描绘了图2的步骤230的进一步细节,其中强制实施关于帐户状态的注册条款。FIG. 6A depicts further details of step 230 of FIG. 2, where registration terms regarding account status are enforced.
图6B描绘了图2的步骤230的进一步细节,其中强制实施关于期满日期的注册条款。FIG. 6B depicts further details of step 230 of FIG. 2 , where registration terms regarding expiration dates are enforced.
图6C描绘了图2的步骤230的过程流程图,其中强制实施注册条款。FIG. 6C depicts a process flow diagram of step 230 of FIG. 2 , where registration terms are enforced.
图7描绘了适于实现各个实施例的计算机硬件的示例框图。7 depicts an example block diagram of computer hardware suitable for implementing various embodiments.
具体实施方式Detailed ways
提供了诸如智能电话等终端、供软件开发者开发用于终端的应用程序的服务、以及开发者的运行终端的软件开发工具/代码的计算机。允许例如用户/个人等开发者使用流线化注册和终端解锁过程来在一个或多个终端上容易地部署和运行应用程序。在一种可能的办法中,一旦被解锁,应用程序就可被自由和直接地部署和运行。然而,开发者仍对这些终端负责,因为这些终端被链接到开发者的注册帐户。此外,根据注册协定,开发者在可被解锁和访问的终端的数目上受到限制。此外,如果开发者违背了注册协定,则可注销终端。终端 周期性地检验服务以确定帐户是否声誉良好,作为响应,服务可向终端提供锁定命令(若有正当理由)。A terminal such as a smartphone, a service for software developers to develop applications for the terminal, and a developer's computer running software development tools/codes for the terminal are provided. Allows developers such as users/individuals to easily deploy and run applications on one or more endpoints using a streamlined registration and endpoint unlocking process. In one possible approach, once unlocked, applications can be freely and directly deployed and run. However, the developer remains responsible for these endpoints, as these endpoints are linked to the developer's registered account. Furthermore, the developer is limited in the number of terminals that can be unlocked and accessed according to the registration agreement. In addition, if the developer violates the registration agreement, the terminal can be deregistered. The terminal periodically checks the service to determine if the account is in good standing, and in response the service may provide a lock command to the terminal (if justified).
图1描绘了包括开发者的计算机、其上将部署应用程序的终端、以及开发者门户的一个或多个服务器的网络。在此示例中,终端120是智能手机,该终端的应用程序的部署将被管理。智能手机的示例包括运行诸如WINDOWS 黑莓 三星 和 等操作系统的手机。然而,本文中提供的概念可与具有网络连通性和应用程序平台的任何类型的终端联用,其中在鼓励第三方开发者构建应用程序的同时期望控制应用程序向终端的分发。通常,终端将可具有唯一性标识符。此类终端的其他示例包括诸如苹果 和微软 等便携式媒体播放器、诸如微软SURFACETM、平板PC等表面计算平台、诸如基于启用网络的电视等家电、诸如MICROSOFT 等游戏设备、个人数字助理(PDA)或掌上型计算机、用于商业应用程序中的数据收集的企业数字助理(EDA)、GPS设备等。终端也可能具有标准PC操作系统,使用第三方开发模型来将应用程序部署在该操作系统上。因而,终端可以是PC。终端可以是可从零售商处购买到的大量生产的设备,或者其可以是定制的设备。Figure 1 depicts a network comprising a developer's computer, an endpoint on which an application is to be deployed, and one or more servers of a developer portal. In this example, the terminal 120 is a smartphone, the deployment of the application for which terminal is to be managed. Examples of smartphones include those running such as WINDOWS blackberries Samsung and Mobile phones with other operating systems. However, the concepts presented herein can be used with any type of terminal having network connectivity and an application platform where it is desirable to control the distribution of applications to the terminal while encouraging third-party developers to build applications. Typically, a terminal will have a unique identifier. Other examples of such terminals include and Microsoft Portable media players such as Microsoft SURFACE TM , surface computing platforms such as tablet PCs, home appliances such as web-enabled TVs, such as MICROSOFT such as gaming devices, personal digital assistants (PDA) or palmtop computers, enterprise digital assistants (EDA) for data collection in business applications, GPS devices, etc. The terminal may also have a standard PC operating system on which the application is deployed using a third-party development model. Thus, the terminal may be a PC. The terminal may be a mass-produced device available from a retailer, or it may be a custom-made device.
如智能手机的终端120可经由无线蜂窝小区电话链路104与天线108通信,天线108与蜂窝小区电话设施110处于通信中。设施110又可与一个或多个网络100(例如诸如因特网等广域网和/或内联网)通信,以及与使得软件开发者能访问终端以通过部署、执行、调试和共享来开发其应用程序的服务的一个或多个服务器160通信。终端120还可经由开发者的计算机140与这一个或多个服务器通信。为了注册终端120,在终端与开发者的计算机140之间建立通信链路102,软件开发工具在该计算机140上运行。例如,链路102可以是在终端的连接器与开发者的计算机140的连接器之间延伸的缆线(系缆)。替换地,可建立诸如经由Wi-Fi(IEEE 802.11)或蓝牙(IEEE 802.15.1)的无线链路。开发者的计算机经由一个或多个网络100与一个或多个服务器160通信。A terminal 120 such as a smartphone may communicate via wireless
开发者的计算机所采取的全部动作也可能由终端来进行。All actions taken by the developer's computer may also be performed by the terminal.
终端120可具有数个组件,包括客户机软件122。在一种办法中,当终端 与开发者的计算机140建立通信时,启动客户机软件。客户机软件被配置成提供如本文中所描述的功能。现代终端常常已具有足以执行本文中所描述的功能的软件和硬件资源。在一些情形中,如果有需要,可向终端提供附加软件。与开发者的计算机的接口124允许终端与开发者的计算机建立连接。接口可包括例如Wi-Fi电路或缆线连接器的端口。与蜂窝电话网络的接口126允许终端经由蜂窝小区电话设施110传达语音和其他数据。接口可包括例如RF发射机和接收机。提供一个或多个处理器128以运行存储在诸如RAM等易失性存储器130和/或诸如ROM等非易失性存储器132中的处理器可读代码。存储器130和132被认为是其上包含有用于对至少一个处理器128进行编程的计算机可读软件的有形计算机可读存储。用户接口可包括键盘和/或屏幕。
注意,在一种办法中,终端的用户接口未被用作应用程序开发过程的部分。替换地,所有开发经由在开发者的计算机上运行的软件开发工具的用户界面来发生。软件开发工具可具有离线能力(在这种方式下其未被连接到一个或多个服务器160),以及已连接能力(在这种方式下其被连接到一个或多个服务器160)。因而,外置于终端的开发者的计算机的用户接口可以是用于向终端部署未签署的应用程序的排他用户界面。此办法使得未授权的人们更难访问终端。要求使用分开的计算机上的软件开发工具来访问终端将阻碍许多非正式、未授权的人们尝试访问终端。大多数非正式用户将无法承受下载并运行软件开发工具的麻烦。Note that in one approach, the terminal's user interface is not used as part of the application development process. Alternatively, all development occurs via the user interface of a software development tool running on the developer's computer. A software development tool may have offline capabilities (in which case it is not connected to one or more servers 160), and connected capabilities (in which case it is connected to one or more servers 160). Thus, the user interface external to the developer's computer of the terminal may be an exclusive user interface for deploying unsigned applications to the terminal. This approach makes it more difficult for unauthorized people to gain access to the terminal. Requiring the use of software development tools on a separate computer to access the terminal would deter many informal, unauthorized persons from attempting to access the terminal. Most casual users won't be able to afford to download and run software development tools.
开发者的计算机140可以是其上运行软件开发工具的任何类型的计算机。此类软件的一个示例是微软WINDOWS 软件开发工具包,其在VISUAL 开发环境内起作用。SDK典型地包括供开发者编写其应用程序时测试并调制其应用程序的仿真器图像。其他示例包括先前提及的各种操作系统的SDK。开发者的计算机140可以是基本上任何类型的计算机,诸如个人计算机(PC)、桌面计算机、连接到主机的终端、一体化计算机、工作站、或膝上型计算机,包括笔记本或上网本计算机。基本上,开发者的计算机140是与终端分开的计算机,并且向开发者提供合适的资源以运行软件开发工具。开发者的计算机具有数个组件,包括软件开发工具142。在一种办法中,软件开发工具由开发者在该开发者期望使用应用程序时启动。软件开发工具被配置 成提供如本文中描述的功能,以及提供用于应用程序开发的常规工具。与终端的接口144允许开发者的计算机140与终端120通信。接口可包括例如Wi-Fi电路或缆线连接器的端口,诸如比方USB端口。Developer's
与服务的接口146允许开发者的计算机140经由至少一个网络100与服务器160通信。接口可包括例如网络接口卡(NIC)。提供一个或多个处理器148以运行存储在诸如RAM等易失性存储器150和/或诸如硬盘或固态存储器等非易失性存储器152中的处理器可读代码。存储器150和152被认为是其上包含有用于对至少一个处理器148进行编程的计算机可读软件的有形计算机可读存储。用户接口154可包括键盘、鼠标和/或屏幕显示器,如以下进一步讨论的。The interface 146 to the service allows the developer's
一个或多个服务器160可位于一个或多个位置处。在一种办法中,注册服务器160被用于存储开发者和终端注册信息,包括已注册开发者和终端的数据库。开发者可建立根据注册协定来维护的帐户,该注册协定指定例如开发者支付的价格、诸如信用卡号等支付信息、开发者可注册的终端的最大数目、以及注册的期满日期。当一个或多个终端被注册时,这些终端的标识符可被链接到开发者的帐户。认证服务器164接收并存储开发者的认证信息,诸如开发者标识符和口令。开发者可直接或经由注册服务器来与认证服务器通信。开发者可使用诸如WINDOWS LIVETM ID等单个登录服务来提供认证信息,单个登录服务允许用户使用一个帐户登录多个网站或服务,诸如及时消息接发、电子邮件、和音乐下载站。另一示例凭证认证系统是OpenID(开放ID)。在一种情景中,当开发者出于与向服务注册无关的原因使用开发者的计算机140来拜访网站时,认证开发者。当开发者随后涉及注册过程时,注册服务器162可访问认证服务器164以确定开发者已被认证,以使得开发者无需提供附加认证信息。One or
用于签署应用程序的应用程序服务器166可由终端120访问以下载经签署的应用程序,其可包括不再处于开发之下且已被服务批准发布的应用程序。典型地,此类应用程序被分类并使其可为公众所用。终端的普通用户可从服务器166将经签署的应用程序下载到终端120。经签署的应用程序仅在其签名被验证之后才可在终端上运行。注意,相同的终端可运行经签署和未经签署的应用程序。即,即使在已解锁终端以使得其运行由开发者提供的未经签署二进制/应用程序之后,其仍可保留对其他经签署的应用程序执行强制实施签名的能 力。An application server 166 for signing applications may be accessed by
用于未经签署的应用程序的应用程序服务器168包括仍处于开发中且尚未为批准发布给一般大众的应用程序。通常,开发者在其应用程序被发布之前设法使诸如同事等其他开发者在共享过程中运行并测试其应用程序。开发者可将应用程序上传到服务器168,在那里其将被分类并使其在受限的基础上(诸如通过要求口令)可为其他已注册开发者所用。在此状态中的应用程序(尚未被批准以进行公共分发)可能是已签署或未经签署的。The application server 168 for unsigned applications includes applications that are still in development and have not been released to the general public for approval. Often, developers try to get other developers, such as colleagues, to run and test their applications in the sharing process before their applications are released. Developers can upload applications to server 168 where they will be cataloged and made available to other registered developers on a limited basis, such as by requiring a password. Applications in this state (not yet approved for public distribution) may be signed or unsigned.
一般而言,所提供的服务可具有以下特征:(1)使开发者能通过终端上以已认证的方式与web服务通信的客户机解锁终端;(2)使开发者能通过开发者门户管理他们已解锁的终端;(3)确保零售终端可连接到web服务并验证它们处于锁定还是解锁状态;(4)确保给定开发者只能解锁预定义数目的终端;(5)确保开发者门户和web服务可响应于不同类型的开发者并确保可被解锁的终端的数目可根据开发者的类型而不同;以及(6)确保没有开发者门户的必需帐户的开发者无法解锁其零售终端。In general, the services provided may have the following features: (1) enable developers to unlock terminals through a client on the terminal that communicates with web services in an authenticated manner; (2) enable developers to manage (3) ensure that retail terminals can connect to the web service and verify whether they are locked or unlocked; (4) ensure that a given developer can only unlock a predefined number of terminals; (5) ensure that the developer portal and the web service can respond to different types of developers and ensure that the number of terminals that can be unlocked can vary depending on the type of developer; and (6) ensure that developers without the requisite account for the developer portal cannot unlock their retail terminals.
实现的一些示例情景如下:Some example scenarios implemented are as follows:
情景1:Cheryl一直在开发智能手机的新游戏。在早期开发阶段,她使用终端仿真器来测试、验证、并调试她的游戏。由于她可编码、构建、部署、调试并在随后重复的速度以及终端仿真器可模拟其游戏使用的全部手机行为(诸如加速计输入)这个事实,她对这种解决方案感到高兴。在开发接近结束阶段,她希望在真实电话上测试其游戏,以确保所有事情都恰当地起作用。她还渴望在真实世界情形中使用其游戏以验证玩游戏和整体用户体验。她将其电话系连到其PC,并从软件开发工具内选择部署命令。从目标列表选择其电话之后,她被告知她必须针对开发注册其电话,并且点进简单向导。在数分钟内,已针对开发注册了电话,游戏部署到电话,并且她在电话上玩游戏。Scenario 1: Cheryl has been developing a new game for her smartphone. During the early development stages, she uses a terminal emulator to test, validate, and debug her games. She is delighted with this solution due to the speed at which she can code, build, deploy, debug, and repeat afterwards, and the fact that the terminal emulator can emulate the full range of phone behavior her game uses, such as accelerometer input. Near the end of development, she wanted to test her game on a real phone to make sure everything was working properly. She is also eager to use her games in real world situations to validate game play and overall user experience. She tethers her phone to her PC and selects the deployment command from within the software development tool. After selecting her phone from the target list, she is told she must register her phone for development, and clicks through a simple wizard. Within minutes, the phone is registered for development, the game is deployed to the phone, and she is playing the game on the phone.
情景2:Timothy正在开发数据分摊(snack)应用程序,例如,从不同网站收集少量数据的应用程序,并且准备好部署到其终端。他将终端系连到PC,并从软件开发工具内选择部署命令。从目标列表选择其终端之后,他被告知他必须针对开发注册其终端,并且点进简单向导。当他在向导中进行时,他被告知其作为终端开发者尚未被完全注册。web浏览器启动到开发者门户,在那里 他完成其注册。他在随后返回开发者终端向导,在那里,他确认他现在被恰当地注册。在数分钟内,已针对开发注册了终端,他的应用程序部署到终端,且他运行应用程序。Scenario 2: Timothy is developing a data snack (snack) application, for example, an application that collects small amounts of data from different websites and is ready to be deployed to its endpoints. He tethers the terminal to the PC and selects the deploy command from within the software development tool. After selecting his endpoint from the target list, he is told that he must register his endpoint for development, and clicks through a simple wizard. As he progressed through the wizard, he was told that he was not fully registered as an end developer. The web browser launches to the developer portal where he completes his registration. He then returns to the Developer Terminal Wizard, where he confirms that he is now properly registered. Within minutes, the endpoint is registered for development, his application is deployed to the endpoint, and he runs the application.
情景3:Kathy正在构建音乐视频应用程序,且准备好部署到她的终端。她将其终端系连到其PC,并从软件开发工具内选择部署命令。她先前注册她的终端,因此当她从目标列表中选择终端时,应用程序立即部署且在一分钟内,她能与终端上她的应用程序进行交互。Scenario 3: Kathy is building a music video application ready to be deployed to her endpoint. She tethers her terminal to her PC and selects the deployment command from within the software development tool. She previously registered her terminal, so when she selects a terminal from the target list, the application is deployed immediately and within a minute, she is able to interact with her application on the terminal.
情景4:Kevin正在构建地图绘制应用程序,且准备好部署到他的终端。他在终端与PC之间建立无线链路,且从软件开发工具内选择部署命令。在从目标列表选择其终端的情况下,他被告知其开发者注册已期满。他的web浏览器启动到开发者门户,在那里他更新其注册。他在随后返回开发者终端向导,在那里,他确认他现在被恰当地注册。在数分钟内,已针对开发注册了他的终端,他的应用程序部署到终端,且他运行应用程序。Scenario 4: Kevin is building a mapping application ready to be deployed to his endpoint. He establishes a wireless link between the terminal and the PC, and selects a deployment command from within the software development tool. With his terminal selected from the target list, he was informed that his developer registration had expired. His web browser launches to the developer portal where he updates his registration. He then returns to the Developer Terminal Wizard, where he confirms that he is now properly registered. Within minutes, his endpoint is registered for development, his application is deployed to the endpoint, and he runs the application.
在一种办法中,服务可部署基于HTTP的应用程序编程接口(API),这些接口允许终端执行各种动作,诸如请求其状态(锁定或解锁)、设置其状态(锁定或解锁)、以及使用其唯一性终端标识符(TerminalID(终端ID))以及指示开发者已被认证的数据进行认证。服务还强制实施每开发者的最大容许终端数目,这可基于在每个开发者的基础上进行调节。服务还可提供管理者控制台,其允许管理者调节将为给定帐户解锁的容许终端的数目。In one approach, services may deploy HTTP-based application programming interfaces (APIs) that allow terminals to perform actions such as requesting their status (locked or unlocked), setting their status (locked or unlocked), and using Its unique terminal identifier (TerminalID (terminal ID)) and data indicating that the developer has been authenticated are authenticated. The service also enforces a maximum number of allowed endpoints per developer, which can be adjusted on a per-developer basis. The service may also provide an administrator console that allows administrators to adjust the number of allowed terminals that will be unlocked for a given account.
可使用以下示例方法:The following sample methods are available:
(1)未注册终端指令服务对终端发出锁定命令。锁定一终端将其从解锁终端列表中移除。需要认证。输入包括TerminalID和经认证用户可移植唯一性标识符(PUID)。输出包括通过或失败状态。(1) Unregistered terminal command service issues a lock command to the terminal. Locking a terminal removes it from the list of unlocked terminals. Authentication is required. Inputs include TerminalID and Authenticated User Portable Unique Identifier (PUID). Output includes pass or fail status.
(2)注册终端指令服务对终端发出解锁命令。解锁一终端将其添加到特定开发者帐户的“解锁”终端列表。需要包含经认证用户的PUID的认证用户会话。输入包括终端ID、经认证、昵称、和PUID。输出包括通过或失败状态以及期满前的天数、或期满日期。(2) Register the terminal instruction service to issue an unlock command to the terminal. Unlocking a terminal adds it to the list of "unlocked" terminals for a specific developer account. An authenticated user session containing the authenticated user's PUID is required. Inputs include Terminal ID, Authenticated, Nickname, and PUID. Output includes pass or fail status and the number of days until expiration, or expiration date.
(3)获得设备状态返回特定终端的状态(锁定或解锁)。不需要认证。输入包括终端ID。输出包括解锁、锁定或未找到状态。若解锁,则服务向终端 发送期满间隔(期满前的时间)。若锁定,则服务返回零。(3) Get Device Status returns the status (locked or unlocked) of a specific terminal. Authentication is not required. The input includes the terminal ID. Outputs include unlocked, locked, or not found status. If unlocked, the service will send the expiration interval (time before expiration) to the terminal. If locked, the service returns zero.
从逻辑角度来看,一些基本需求可包括如下:(1)通过API解锁终端的任何开发者必须具有有效帐户状态——这意味着在最小程度上,他们必须支付任何所需费用且必须被准许访问门户。(2)API强制实施根据帐户类型的终端计数。示例帐户类型包括伙伴组织帐户(其中伙伴组织与服务提供商具有已建立工作协定)、非伙伴组织帐户(其中非伙伴组织与服务提供商未建立工作协定)、以及个体帐户。对于组织帐户,默认的所允许终端的数目通常大于个体帐户的。默认的所允许终端的数据应当是可基于每帐户来配置的。(3)如果开发者超过所允许终端的数目,则抛出异常,并要求开发者(经由终端客户机)从开发者门户的列表中移除一个终端。(4)终端解锁应当强制实施解锁终端的期满时间线。解锁终端的默认期满是12个月,且被绑定到开发者帐户的期满。(5)期满的注册应当使终端自动返回锁定状态,正如再度注册应当延长期满日期并使终端保持解锁。From a logical standpoint, some basic requirements can include the following: (1) Any developer who unlocks an endpoint via the API must have a valid account status - meaning at a minimum, they must pay any required fees and must be granted Access the portal. (2) The API enforces endpoint counting by account type. Example account types include partner organization accounts (where the partner organization has an established work agreement with the service provider), non-partner organization accounts (where the non-partner organization has no work agreement with the service provider), and individual accounts. For organizational accounts, the default number of allowed endpoints is usually greater than for individual accounts. The default allowed endpoint data should be configurable on a per-account basis. (3) If the developer exceeds the number of allowed terminals, an exception is thrown and the developer is asked (via the terminal client) to remove a terminal from the developer portal's list. (4) Terminal unlocking should enforce an expiration timeline for unlocking the terminal. The default expiration of an unlocked terminal is 12 months and is tied to the expiration of the developer account. (5) An expired registration should return the terminal to the locked state automatically, just as a re-registration should extend the expiration date and keep the terminal unlocked.
以下表示API可返回的一些基本错误代码列举:错误901——帐户不活跃,错误902——帐户未找到,错误903——终端技术超出,错误904——无法解锁终端(通用)、错误905——无法锁定终端(通用),以及错误906——终端ID未找到。The following is an enumeration of some basic error codes that the API can return: Error 901——Account is not active, Error 902——Account not found, Error 903——The terminal technology exceeds, Error 904——Unable to unlock the terminal (generic), Error 905— - Failed to lock terminal (generic), and error 906 - Terminal ID not found.
以下表示服务可使用的示例API。The following represent sample APIs that the service can use.
(1)获得设备状态(1) Get device status
路径:http://api.developer.windowsphone.com/tools/02/2010/terminals/GetStatus?terminalId:GuidPath: http://api.developer.windowsphone.com/tools/02/2010/terminals/GetStatus? terminalId: Guid
方法:获得Method: get
描述:获得终端的状态,状态为锁定、解锁或未找到。Description: Get the status of the terminal, whether it is locked, unlocked or not found.
项目:终端状态枚举Project: Terminal State Enumeration
UrlParameters(Url参数)UrlParameters (Url parameters)
terminalId:字符串(全局唯一性标识符或GUID),表示要查找的终端terminalId: String (Globally Unique Identifier or GUID) indicating the terminal to look for
样本响应:Sample response:
(2)锁定终端(2) Lock terminal
路径:http://api.developer.windowsphone.com/tools/02/2010/terminals/LockTerminal?terminalId:Guid}Path: http://api.developer.windowsphone.com/tools/02/2010/terminals/LockTerminal? terminalId:Guid}
方法:投递Method: delivery
描述:指令服务对终端发出锁定命令。Description: The command service issues a lock command to the terminal.
项目:终端状态枚举Project: Terminal State Enumeration
UrlParameters(Url参数)UrlParameters (Url parameters)
terminalId:字符串(GUID),表示要查找和锁定的终端terminalId: string (GUID), indicating the terminal to find and lock
liveIDTicket(存活ID票据):包含开发者信息(在头部中)的票据liveIDTicket (survival ID ticket): a ticket containing developer information (in the header)
样本响应:Sample response:
注意,获得请求仅基于URL值和一组HTTP头部从web服务器取得数据。关于获得请求没有额外数据;所有东西都在URL和头部中指定。相比之下,投递请求向web服务器发送附加数据(在URL之后指定)、头部和用于指示头部的结束的空行。Note that a GET request only fetches data from a web server based on the URL value and a set of HTTP headers. There is no extra data about the GET request; everything is specified in the URL and headers. In contrast, a post request sends additional data (specified after the URL), headers, and a blank line to indicate the end of the headers to the web server.
图2描述了用于与图1的网络联用的方法,其中开发者和终端向开发者门户的服务进行注册,在终端上部署并运行应用程序,且注册条款被强制实施。在步骤200,开发者根据注册协定向服务进行注册。步骤200的进一步细节结合图3A和3B来提供。Figure 2 depicts a method for use with the network of Figure 1, where developers and terminals register with the developer portal's services, applications are deployed and run on the terminals, and registration terms are enforced. In
在步骤210,开发者向服务注册一个或多个终端以解锁这一个或多个终端。步骤210的进一步细节结合图4A-4g来提供。在步骤220,开发者在这一个或多个终端上部署和运行应用程序。步骤220的进一步细节结合图5来提供。在步骤230,例如在注册一个或多个终端的时间段期间强制实施注册协定的条款。步骤230的进一步细节结合图6A-6C来提供。At step 210, the developer registers one or more terminals with the service to unlock the one or more terminals. Further details of step 210 are provided in connection with Figures 4A-4g. In step 220, the developer deploys and runs the application program on the one or more terminals. Further details of step 220 are provided in connection with FIG. 5 . At step 230, the terms of the registration agreement are enforced, eg, during a period of time during which one or more terminals are registered. Further details of step 230 are provided in connection with Figures 6A-6C.
图3A描绘了图2的步骤200的进一步细节,其中开发者向开发者门户的服务进行注册。在一种情形中,开发者在步骤300开始预注册。一般而言,这在开发者在向服务注册终端之前的某个时刻向服务注册他自己或她自己时发生。在步骤302,开发者例如使用常规web浏览器访问服务的web站点以进行注册。在步骤304,开发者经由web站点提供注册信息。关于进一步细节请参看图3B。在步骤306,服务将信息存储在例如一个或多个服务器上。在步骤308,服务向开发者的计算机发送指示开发者已被认证的数据。此数据可包括例如服务票据或其他具有令牌或词例化密钥值对的经加密cookie。在步骤310,数据被存储在开发者的计算机上。FIG. 3A depicts further details of
在第二注册情形中,开发者经由开发者的计算机上的软件开发工具诸如结合注册终端来开始注册(步骤312)。在步骤314,开发者经由用户接口选择要注册的终端。在步骤316,开发者被重定向至服务的web站点以进行注册,并且如先前所讨论的进行其余步骤304-310。In a second registration scenario, the developer initiates registration via a software development tool on the developer's computer, such as in conjunction with a registration terminal (step 312). In step 314, the developer selects a terminal to register via the user interface. At step 316, the developer is redirected to the service's web site to register and the remaining steps 304-310 proceed as previously discussed.
图3B描绘了与图3A的步骤304相关联的示例用户界面,其中开发者向 开发者门户的服务进行注册。示例用户界面或屏幕显示320是用于“开发者注册”。其包括用于开发者信息的部分322,其中开发者点进至一表格以输入例如开发者标识符、开发者名字和联系信息。部分324用于帐户设置,其中开发者点进至一表格以输入例如要注册的终端的数目、期满日期、和许可。不同的许可可任选地用于分别准许访问不同的特征。例如,不同的许可可允许终端运行调试应用程序以及诸如概况分析器等开发相关过程,其可以是软件开发工具的部分。在另一示例中,一个许可可能适合于学生软件开发者,且仅对终端实现基本应用程序开发特征,而另一准许可能适合于专业软件开发者,且对终端实现基本或高级应用程序开发特征。FIG. 3B depicts an example user interface associated with step 304 of FIG. 3A, where a developer registers with the developer portal's services. An example user interface or screen display 320 is for "Developer Registration." It includes a section 322 for developer information, where the developer clicks through to a form to enter, for example, a developer identifier, developer name and contact information.
部分326用于支付信息,其中开发者点进至一表格以输入例如信用卡号等。部分328用于认证,其中开发者点进至一表格以输入认证信息,诸如开发者标识符(如果与开发者信息322使用的不同),和口令。例如,使用WINDOWS LIVETM ID,开发者提供电子邮件地址和口令。开发者认证信息无需与开发者的计算机相关联,以使得终端不依赖于仅通过开发者的计算机来运行。按钮330允许开发者取消当前输入,而按钮332允许开发者保存当前输入。Section 326 is for payment information, where the developer clicks through to a form to enter, for example, a credit card number, etc.
图4A描绘了图2的步骤210的进一步细节,其中开发者向开发者门户的服务注册一个或多个终端以解锁一个或多个终端。在步骤400,建立终端与开发者的计算机之间的通信链路。如以上所提及的,这可包括在两个设备之间连接缆线。在步骤402,响应于检测到通信链路在终端处启动客户机软件。仅在建立通信链路时启动客户机软件可最小化对在终端上运行的附加应用程序/服务的性能影响。FIG. 4A depicts further details of step 210 of FIG. 2, wherein a developer registers one or more terminals with the developer portal's service to unlock the one or more terminals. At
在步骤404,客户机软件进行等待,并监听来自开发者的计算机的入站消息。在步骤405,开发者经由软件开发工具的用户界面选择终端。作为响应,在步骤406,开发者的计算机向终端发送指示开发者已被认证的数据。这可以是例如图3A的步骤308和310中提及的数据。作为响应,在步骤408,终端向服务发送对解锁自己的请求,其中该请求包括接收自开发者的计算机的数据和终端标识符。标识符可包括例如硬件专用证书、终端序列号或其他唯一性终端标识符。一示例是国际移动装备身份(IMEI)号。注意,诸如IMEI号等一些终端标识可由开发者经由终端的用户界面以及由终端处的客户机软件来访 问。标识符对于终端应当是唯一的,且不应当改变,而不管终端的重置或重新格式化。终端可具有直接绑定至硬件以允许客户机软件访问标识符的API。出于此目的,WINDOWS 使用API GetDeviceUniqueID()(获得设备唯一性ID())。在步骤408,请求可以是使用终端处的API的标准web服务调用。例如,可使用HTTP调用,其中头部携带指示开发者已被认证的数据。At step 404, the client software waits and listens for inbound messages from the developer's computer. In step 405, the developer selects a terminal via the user interface of the software development tool. In response, at step 406, the developer's computer sends data to the terminal indicating that the developer has been authenticated. This could be, for example, the data mentioned in
终端可按穿过方式经由开发者的计算机与服务的一个或多个服务器通信(步骤412),或者经由诸如蜂窝小区电话信道等另一链路与服务的一个或多个服务器通信(步骤410,参见图1)。例如,关于步骤412,MICROSOFT 使用桌面穿过(DTPT)技术来执行同步。DTPT使得终端能通过终端所连接的开发者的计算机透明地访问诸如因特网等外部网络。另一办法是通过USB使用模拟串行端口将终端连接至服务。The terminal may communicate with one or more servers of the service in a pass-through manner via the developer's computer (step 412), or via another link such as a cell phone channel (step 410, See Figure 1). For example, with respect to step 412, MICROSOFT Synchronization is performed using desktop pass-through (DTPT) technology. DTPT enables a terminal to transparently access an external network such as the Internet through a developer's computer to which the terminal is connected. Another way is to connect the terminal to the service via USB using an emulated serial port.
在判决步骤414,服务确定是否授权对终端的解锁。在图4B中提供了进一步细节。如果在判决步骤414授权解锁,则在步骤416服务向终端发送具有解锁数据(诸如许可证文件或比如注册密钥等持久令牌)以及期满日期的命令。注册状态(解锁或锁定)可持续作为布尔值或者由许可证或证书来保护。终端通过检测持久令牌或许可证文件的存在性来确定其被解锁。可以使用诸如微软 等数字版权管理(DRM)方案来提供示例许可证。许可证的特性确保其未被篡改以及来自权威性场所。许可证文件可包括证书文件。In
期满数据可用例如其中解锁状态被授权为持久的时间段(诸如,一年)、或者期满日期来表示。或者,终端可被配置成强制实施默认期满日期。注意,可在从服务至终端的一个或多个消息中提供命令。例如,一个消息可包括解锁数据,而另一消息可包括期满日期。出于跟踪的目的,命令还可包开发者的标识符。开发者的标识符可被存储在终端上。Expiration data may be represented by, for example, a time period in which unlocked status is authorized to be persistent, such as one year, or an expiration date. Alternatively, the terminal can be configured to enforce a default expiration date. Note that the commands may be provided in one or more messages from the service to the terminal. For example, one message may include unlock data, while another message may include an expiration date. The command may also include the developer's identifier for tracking purposes. The developer's identifier can be stored on the terminal.
持续解锁状态可包括在终端上维持或存储解锁数据。客户机软件处的逻辑流可通过识别解锁状态实现备用行为。例如,解锁状态可通过验证许可证来识别。锁定状态可指示仅可在终端上运行从服务下载的已签署应用程序,而解锁状态行为可指示也可在终端上运行从软件开发工具或其它源下载的未经签署应用程序。Persisting in an unlocked state may include maintaining or storing unlock data on the terminal. The logic flow at the client software can implement an alternate behavior by recognizing the unlock state. For example, unlocked status can be identified by validating a license. A locked state may indicate that only signed applications downloaded from the service may run on the terminal, while an unlocked state behavior may indicate that unsigned applications downloaded from software development tools or other sources may also run on the terminal.
一般而言,通过使用证书材料,诸如一些已知服务器值(例如,与服务器 相关联的标识符)的散列,可认证终端的解锁状态尚未被篡改。In general, by using credentialing material, such as a hash of some known server value (e.g., an identifier associated with the server), it can be verified that the unlocked state of the terminal has not been tampered with.
在步骤416提供的解锁数据除解锁状态之外还可以与控制解锁持续期/期满相同的方式提供对附加解锁约束的控制。例如,解锁数据可以:(a)限制可从服务安装到解锁终端上的应用程序的数目;(b)设置对所安装的应用程序的期满的控制;(c)限制数个应用程序的启动的次数,等等。The unlock data provided at
在情形(a)中,如果已达到所安装的应用程序的数目的限度,则将禁止开发者在终端上安装附加应用程序。可在开发者的计算机上提供向开发者通知限制的消息。开发者可被通知用于删除先前安装的应用程序以使得可安装新应用程序而不会超过限度、或者用于访问服务以购买附加权限来安装另一应用程序的选项。In case (a), if the limit on the number of installed applications has been reached, the developer will be prohibited from installing additional applications on the terminal. A message notifying the developer of the restriction may be provided on the developer's computer. The developer may be notified of the option to delete previously installed applications so that new applications can be installed without exceeding the limit, or to access the service to purchase additional rights to install another application.
在情形(b)中,可设置对运行应用程序的授权期满的时间。不同的所安装的应用程序可具有不同的期满时间。类似于例如如以下结合图6A和6B讨论的强制实施终端注册的期满日期的方式,可强制实施应用程序专用期满日期。In case (b), the time at which the authorization to run the application expires may be set. Different installed applications may have different expiration times. Application-specific expiration dates may be enforced in a manner similar to the manner in which expiration dates for terminal registrations are enforced, for example, as discussed below in connection with FIGS. 6A and 6B .
在情形(c)中,如果已到应用程序可被启动的次数的限度,则将禁止开发者在终端上再次启动该应用程序。可在开发者的计算机上提供向开发者通知限制的消息。可向开发者通知用于访问服务以购买附加权限来启动该应用程序的选项。例如,可在每应用程序的基础上强制实施此限制。In case (c), if the limit of the number of times the application can be launched has been reached, the developer will be prohibited from launching the application again on the terminal. A message notifying the developer of the restriction may be provided on the developer's computer. The developer may be notified of the option to access the service to purchase additional rights to launch the application. For example, this limit can be enforced on a per-application basis.
在步骤418,终端存储解锁数据和期满日期。在步骤419,终端诸如通过使用解锁数据调用API来解锁自己。示例调用具有以下格式:SetDeveloperUnlockState(DEVELOPERUNLOCK_STATE_UNLOCKED)(设置开发者解锁状态(开发者解锁_状态_已解锁)).In
在步骤419,如果解锁成功,则可将来自软件开发工具的二进制文件(二进制)从开发者的计算机复制到终端(步骤420)。在示例实现中,每个二进制文件可被打包为XAP文件,并被部署到数据包管理器以便进行安装。XAP是其内包含有微 SILVERLIGHTTM应用程序的zip(压缩)文件。微 SILVERLIGHTTM是web应用程序框架,其提供与 平台中的那些相类似的功能,将多媒体、图形、动画和交互性整合到单个运行时环境中。通过此机制部署到终端的所有二进制文件可在初始化时调用GetDeveloperUnlockState(获得开发者解锁状态),并验证其返回 DEVELOPERUNLOCK_STATE_UNLOCKED以验证终端被解锁。如果终端未被解锁,则这些二进制应终止。在所有二进制已被复制到终端并被安装之后,开发者的计算机上的用户界面可向开发者通知终端可用(步骤421)并显示终端的标识符(参见图4F)。In step 419, if the unlocking is successful, the binary file (binary) from the software development tool may be copied from the developer's computer to the terminal (step 420). In an example implementation, each binary file can be packaged as a XAP file and deployed to a package manager for installation. XAP is a micro- The zip (compressed) file of the SILVERLIGHT TM application. micro SILVERLIGHT TM is a web application framework that provides and Similar capabilities to those in the platform, integrating multimedia, graphics, animation, and interactivity into a single runtime environment. All binaries deployed to the terminal through this mechanism can call GetDeveloperUnlockState (to obtain the developer unlock state) at initialization time, and verify that it returns DEVELOPERUNLOCK_STATE_UNLOCKED to verify that the terminal is unlocked. These binaries should terminate if the terminal is not unlocked. After all binaries have been copied to the terminal and installed, the user interface on the developer's computer can notify the developer that the terminal is available (step 421) and display the terminal's identifier (see FIG. 4F).
如果在判决步骤414未授权解锁,则在步骤422服务任选地向终端发送出错消息,且在步骤424终端可任选地经由软件开发工具向开发者的计算机报告相应的出错消息。If at
图4B描绘了图4A的判决步骤414的进一步细节,其中关于是否授权对终端的解锁作出确定。例如,在步骤426,服务基于由终端提供的开发者认证信息标识开发者的帐户。此开发者认证信息可以是提供给开发者的计算机的数据,且其指示开发者已被服务的一个或多个服务器认证。在步骤428,服务用先前与帐户相关联的开发者认证信息验证由终端提供的开发者认证信息,以确保存在匹配。注意:在从终端向服务的初始通信中,终端标识符可能不与开发者帐户相关联。在注册了终端之后,终端标识符与开发者帐户相关联,以使得来自终端的后继请求可基于所标识的终端与开发者帐户相关联。终端可以(但无需)在后继请求中提供开发者认证信息。FIG. 4B depicts further details of
判决步骤430确定注册帐户是否仍有效。如果注册协定的条款已被违反,诸如未支付或者例如欺骗或使用恶意软件等违反的其它行为,则帐户可能是无效的。这些其它行为可能为具有使帐户无效的权力的管理员所知。判决步骤432确定注册空隙是否可用。如果关于帐户将被注册的最大容许终端数目尚未被超过,则空隙可用。判决步骤434确定终端是否已被注册。例如,终端标识符可以在已注册到帐户的终端标识符的列表中。如果判决步骤430、432、和434为真,则在步骤436授权对终端的解锁。否则,在步骤438不授权对终端的解锁。
图4C和4D描绘了与图4A的步骤405相关联的示例用户界面,开发者藉由其选择一个或多个终端来进行注册。在图4C中,示例用户界面或屏幕显示440用于“添加终端”。其包括部分442,开发者可在部分442中选择终端的类型,诸如“视窗电话”、“Xbox”或“Zune”。在此示例中,由开发者通过例如使用鼠标等适当的输入来选择“视窗电话”。可选择按钮444以取消过程,而可选择 按钮446以找到所选类型的终端。当选择按钮446时,软件开发工具使用自动检测技术来自动检测与开发者的计算机具有通信链路且是所选类型的任何终端。在图4D中,示例用户界面或屏幕显示450指示已找到所选类型的终端,并且提供终端的标识,例如“HTC Touch Pro2”,其是 智能手机的示例型号名称。可选择按钮452以取消过程,而可选择按钮454以使用本文中所描述的技术来注册终端。4C and 4D depict example user interfaces associated with step 405 of FIG. 4A by which a developer selects one or more terminals for registration. In FIG. 4C, an example user interface or screen display 440 is used to "Add Terminal." It includes a
图4E描绘了与图4A的步骤421相关联的示例用户界面,该界面提供了指示终端已被解锁的报告。示例用户界面或屏幕显示460指示已成功注册所选终端,并提供终端的标识。可选择按钮462以继续进行允许准备、部署、执行、调试或共享应用程序的软件开发工具的其它部分。FIG. 4E depicts an example user interface associated with step 421 of FIG. 4A that provides a report indicating that the terminal has been unlocked. An example user interface or
图4F描绘了与图4A的步骤420相关联的示例用户界面,该界面提供了指示开发者帐户的相关联的所有已被解锁的终端的报告。用户界面可经由服务的web站点来提供,且允许已注册的开发者查看和移除/注销当前被解锁的终端,以确保已注册终端的在线列表与实际被注册的那些终端保持同步。用户界面还允许开发者管理有限数目个终端、确定容许注册终端数目以及对锁定和解锁的终端的计数、确定每帐户类型的默认容许解锁终端数目。在一种办法中,开发者在访问用户界面之前需要具有帐户。FIG. 4F depicts an example user interface associated with step 420 of FIG. 4A that provides a report indicating all unlocked terminals associated with a developer account. A user interface may be provided via the service's web site and allow registered developers to view and remove/logout currently unlocked terminals to ensure that the online list of registered terminals is kept in sync with those actually registered. The user interface also allows the developer to manage a limited number of terminals, determine the number of allowed registered terminals and counts of locked and unlocked terminals, determine the default allowed number of unlocked terminals per account type. In one approach, the developer needs to have an account before accessing the user interface.
示例用户界面或屏幕显示470包括包含各种选择的“帐户信息”部分。可选择“用户概况”以查看和更新诸如开发者名称和联系信息等细节。可选择“商业细节”以查看诸如注册协定的条款等信息。可选择“支付信息”以查看诸如存档的信用卡号等细节。在这里,选择“终端管理器”,从而导致描绘“我的被解锁终端”的显示区域474。此区域提供已被注册到开发者的所有终端的概要。区域474指示当前被解锁终端数目,例如3个,以及最大允许被解锁终端数目,例如5个。对于三个终端中的每一个,提供终端名称、终端标识符、解锁期满日期和“移除”动作。可选择“移除”链接以注消相应的终端。在一种办法中,一旦选择按钮478,开发者的计算机或服务就向终端发送注销命令,作为响应,终端向服务发送对注销终端的请求,并从服务接收相应的命令以进行注销。这样,服务可管理终端。请求可包括认证开发者的数据,类似于先前所讨论的对注册的请求。可选择按钮476以取消当前用户界面选择。The example user interface or
图4g描绘了图2的步骤210的过程流程图,其中开发者向开发者门户的服务注册一个或多个终端以解锁这一个或多个终端。在过程480,开发者的计算机向终端发送注册请求,以请求终端注册其自己。在过程481,终端使用调用GetDeviceUniqueID访问其标识符。在过程482,终端向服务发送认证数据。在过程483,服务确定开发者帐户是否是现时且有效的。如果帐户不是现时且有效的,则发生出错处理过程484。以上参照图1讨论了示例出错代码。在过程485,服务确定是否存在可用注册空隙,例如,最大终端数目是否已被注册到该帐户。如果没有可用注册空隙,则发生出错处理过程486。如果发生出错处理过程484或486,则发生从终端至开发者的计算机的出错处理过程487。Fig. 4g depicts a process flow diagram of step 210 of Fig. 2, wherein a developer registers one or more terminals with the service of the developer portal to unlock the one or more terminals. In process 480, the developer's computer sends a registration request to the terminal to request the terminal to register itself. In process 481, the terminal accesses its identifier using the call GetDeviceUniqueID. At process 482, the terminal sends authentication data to the service. In process 483, the service determines whether the developer account is current and valid. If the account is not current and valid, error handling 484 occurs. Example error codes are discussed above with reference to FIG. 1 . In process 485, the service determines whether there are registration slots available, eg, whether the maximum number of terminals has already been registered to the account. If there are no registration slots available, then error handling 486 occurs. If error handling 484 or 486 occurs, then error handling 487 occurs from the terminal to the developer's computer.
在过程488,服务确定请求方终端是否已被注册到帐户。在过程489,服务执行注册。过程向终端提供注册结果,例如用于解锁终端的命令。若有需要,例如,如果终端已被注册,则发生从终端到开发者的计算机的出错处理过程491。在过程492,终端解锁其自己。在过程493,将注册结果——例如,终端已被解锁的指示——从终端提供到开发者的计算机。At process 488, the service determines whether the requesting terminal is already registered to an account. In process 489, the service performs a registration. The procedure provides registration results to the terminal, such as a command to unlock the terminal. Error handling occurs 491 from the terminal to the developer's computer if necessary, for example, if the terminal is already registered. At process 492, the terminal unlocks itself. At process 493, the result of the registration—eg, an indication that the terminal has been unlocked—is provided from the terminal to the developer's computer.
图5描绘了图2的步骤220的进一步细节,其中应用程序被部署到被解锁终端并在其上运行。在步骤500,开发者使用开发者的计算机上的软件开发工具开发应用程序,该软件开发工具包括终端仿真器。在步骤502,开发者使用软件开发工具来在终端上部署和运行未经签署的应用程序。在步骤504,终端上的客户机软件接收并存储未经签署的应用程序,而无需验证其真实性。FIG. 5 depicts further details of step 220 of FIG. 2, wherein the application is deployed to and runs on the unlocked terminal. At step 500, a developer develops an application using a software development tool on the developer's computer, the software development tool including a terminal emulator. In step 502, the developer uses a software development tool to deploy and run the unsigned application on the terminal. At step 504, the client software on the terminal receives and stores the unsigned application without verifying its authenticity.
如以上所提及的,一旦终端被解锁,其就可运行未经签署的应用程序,由此助益开发者的工作。通常,开发者将在一天中开发应用程序的若干个编译版本,这些编译版本被各自部署和运行。开发者可独立于服务来部署各个编译版本。这与对开发者使用基于证书的系统来授权和签署应用程序的各个编译版本的其它办法——其中证书为开发者所特有——是有益的。此类办法将证书安装并存储到终端上,并要求若干个设置步骤。As mentioned above, once a terminal is unlocked, it can run unsigned applications, thereby facilitating the work of developers. Typically, a developer will develop several compiled versions of an application throughout the day, which are each deployed and run. Developers can deploy individual builds independently of the service. This is beneficial to other approaches where developers use a certificate-based system to authorize and sign individual compiled versions of an application, where the certificate is unique to the developer. Such approaches install and store the certificate on the terminal and require several setup steps.
相比之下,解锁状态允许将由例如在另一开发者的计算机上的软件开发工具的另一实例开发的未经签署的应用程序直接部署到终端并其上执行。因而,开发者可将终端连接到运行软件开发工具的另一实例的另一开发者的计算机,并将单独的应用程序/应用程序编译版本部署到同一终端。因而,终端的解锁状 态可持续不变,而与被用于注册其的开发者的计算机无关,以使得解锁状态允许将应用程序从在不同开发者的计算机上运行的软件开发工具的不同实例部署到终端并在该终端上执行。此外,终端的解锁状态持续不变,而与开发者以及开发者的帐户无关,以使得解锁状态允许将应用程序从软件开发工具的不同用户部署到终端并在终端上执行。In contrast, the unlocked state allows an unsigned application developed by another instance of a software development tool, eg, on another developer's computer, to be directly deployed to and executed on the terminal. Thus, a developer can connect a terminal to another developer's computer running another instance of a software development tool, and deploy a separate application/compiled version of an application to the same terminal. Thus, the unlocked state of the terminal is persistent regardless of the developer's computer used to register it, so that the unlocked state allows the application to be downloaded from different instances of the software development tool running on different developers' computers. Deploy to a terminal and execute on that terminal. Furthermore, the unlocked state of the terminal persists regardless of the developer and the developer's account, such that the unlocked state allows applications to be deployed to and executed on the terminal from different users of the software development tool.
此外,未经签署的应用程序可被部署到任何经注册的终端。在使用其它方法情况下,开发者必须提前知晓应用程序将在哪些终端上运行以及必须跟踪该信息,并且如果开发者尝试在另一终端上运行应用程序,或者另一开发者尝试运行应用程序,则其将不运行,因为对运行的授权被绑定到开发者或开发者的计算机。Additionally, unsigned applications can be deployed to any registered endpoint. With other methods, the developer must know ahead of time which terminals the application will run on and must keep track of that information, and if the developer tries to run the application on another terminal, or if another developer tries to run the application, Then it will not run because the authorization to run is tied to the developer or the developer's computer.
以上所提及的优点在涉及一个或多个开发者的开发过程方面提供了极大的灵活性和效率。向证书等效级别安全性提供了对于开发者而言简单的“保持开放”级别,如同终端在解锁下被装运那样。此外,尽管可在不与服务或其它集中式管理器交互的情况下加载应用程序,但是服务保持对终端的控制,因为在这些终端周期性地登记时它们可被注销(撤销注册)。例如,被知晓已违背注册协定的开发者(诸如由于分发代码破解软件)可使得他或她的帐户被取消,以使得注册到该开发者的终端在它们登记时被撤销注册。登记可相对频繁地发生,诸如比方两周一次,以使得未经授权使用的时段不会那么长。在另一可能的情景中,开发者的经注册终端可能丢失或失窃,在这种情形中,开发者可请求服务在终端下次登记时对这些终端撤销注册,以使得开发者可注册另一终端来代替丢失或失窃终端,而不会超过按注册协定的最大允许终端数目。此外,终端自己可通过其标识符与特定开发者相关联,以使得通过访问电话中的开发者标识符可使开发者对将终端给予违背注册协定的另一个人应负责任。The above-mentioned advantages provide great flexibility and efficiency in the development process involving one or more developers. The certificate equivalence level security provides a simple "keep open" level for developers, as if the terminal was shipped unlocked. Furthermore, although applications can be loaded without interacting with the service or other centralized manager, the service maintains control over the terminals as they can be unregistered (deregistered) as they periodically register. For example, a developer who is known to have violated a registration agreement (such as by distributing code-cracking software) may have his or her account cancelled, so that terminals registered to the developer are deregistered when they register. Registration may occur relatively frequently, such as once every two weeks, so that the period of unauthorized use is not as long. In another possible scenario, a developer's registered terminal may be lost or stolen, in which case the developer may request the service to deregister the terminal the next time the terminal registers, so that the developer may register another Terminals to replace lost or stolen terminals without exceeding the maximum number of terminals allowed under the registration agreement. Furthermore, the terminal itself can be associated with a particular developer by its identifier, so that accessing the developer identifier in the phone can make the developer liable for giving the terminal to another person in violation of the registration agreement.
在步骤506,开发者使用软件开发工具执行对应用程序的调试。任选地,在步骤508,开发者可与其它经注册的开发者及其经注册的终端共享应用程序,以使得他们可测试该应用程序并提供反馈。一种如此进行的可能的办法涉及开发者将未经签署的应用程序上传到服务。在步骤510,服务存储应用程序并对其编目录。在步骤512,另一经注册的开发者将未经签署的应用程序从服务下载到他或她的计算机,以使得其可被部署到任何经注册的终端。At step 506, the developer performs debugging of the application program using a software development tool. Optionally, at step 508, the developer can share the application with other registered developers and their registered endpoints so that they can test the application and provide feedback. One possible way of doing this involves developers uploading unsigned applications to the service. At step 510, the service stores and catalogs the application. At step 512, another registered developer downloads the unsigned application from the service to his or her computer so that it can be deployed to any registered endpoint.
具体地,为了共享应用程序,开发者可向服务预先注册将要下载所共享的未经签署的应用程序的终端。此注册过程可涉及开发者例如通过使用其认证信息进行登录来向开发者门户认证他自己或她自己。开发者随后提供不可哄骗终端专用标识符,诸如IMEI号,或者由诸如GetDeviceUniqueID()等API返回的基于硬件的散列。共享涉及接收和预设终端专用许可证,其可被实现为终端处的终端专用证书。许可证可被各种过程用作终端已被解锁和授权进行共享的验证。Specifically, in order to share an application, the developer may pre-register with the service a terminal that will download the shared unsigned application. This registration process may involve the developer authenticating himself or herself to the developer portal, eg, by logging in using their authentication information. The developer then provides a non-spoofable device-specific identifier, such as an IMEI number, or a hardware-based hash returned by an API such as GetDeviceUniqueID(). Sharing involves receiving and provisioning a terminal-specific license, which may be implemented as a terminal-specific certificate at the terminal. The license can be used by various processes as verification that the terminal has been unlocked and authorized for sharing.
图6A描绘了图2的步骤230的进一步细节,其中强制实施关于帐户状态的注册条款。如以上所提及的,虽然向开发者提供了极大的灵活性和易用性,但是服务仍对将应用程序部署到终端保持一定程度的控制。在一种可能的办法中,终端被配置成在步骤600将其标识符周期性地传达给服务以在登记过程中验证终端的状态。当终端诸如每几天一次被连接到网络时,可基于非确定性调度——例如在随机化时间下——发生登记。例如,智能手机可经由蜂窝小区电话链接或者经由Wi-Fi或蓝牙连接登记。在步骤602,服务基于标识符访问注册信息以标识相应的帐户,并确定帐户的状态。例如,状态可以是有效或无效/被取消。终端标识符在数据库中被链接到相应的开发者帐户以及相关联的帐户状态信息。在判决步骤604,如果帐户有效,则在步骤608,服务向终端发送继续持续解锁状态的命令。如果帐户无效,则在步骤606,服务向终端发送设置并持续锁定状态的命令。FIG. 6A depicts further details of step 230 of FIG. 2, where registration terms regarding account status are enforced. As mentioned above, while providing developers with great flexibility and ease of use, services still maintain a certain degree of control over the deployment of applications to endpoints. In one possible approach, the terminal is configured to periodically communicate its identifier to the service at
例如,当终端接收命令时,API SetDeveloperUnlockState(DEVELOPERUNLOCK_STATE_LOCKED)(设置开发者解锁状态(开发者解锁_状态_锁定))可被调用以重新锁定终端。在一种办法中,当锁定状态持续时,可保持已被安装到终端的来自软件开发工具的二进制文件和任何未经签署的应用程序。在此情形中,如果终端再次变为解锁,则开发者的连贯性得到保持。替换地,当发起锁定状态时,可删除二进制文件和/或任何未经签署的应用程序。注意,还可基于开发者命令——例如经由图4F的用户界面中的“移除”动作——锁定终端。开发者可能期望在终端不再需要应用程序开发时对终端撤销注册。For example, the API SetDeveloperUnlockState(DEVELOPERUNLOCK_STATE_LOCKED) (Set Developer Unlock State (DEVELOPERUNLOCK_STATE_LOCKED)) may be called to re-lock the terminal when the terminal receives the command. In one approach, binaries from software development tools and any unsigned applications that have been installed to the terminal may remain while the locked state persists. In this case, the developer's continuity is maintained if the terminal becomes unlocked again. Alternatively, binaries and/or any unsigned applications may be deleted when the locked state is initiated. Note that the terminal can also be locked based on a developer command—eg, via the "remove" action in the user interface of FIG. 4F. A developer may desire to deregister a terminal when the terminal is no longer required for application development.
图6B描绘了图2的步骤230的进一步细节,其中强制实施关于期满日期 的注册条款。在步骤610,例如,当终端首次被解锁时,终端基于来自服务的命令存储期满日期。在判决步骤612,当达到期满日期(和/或期满日期之前和/或之后的某一时间)时,终端将其标识符传达给服务,以在步骤614确定是否已续订终端的注册。服务可预先联系开发者,诸如经由电子邮件消息,以向开发者通知诸如通过访问服务的web站点来续订服务。FIG. 6B depicts further details of step 230 of FIG. 2 , in which registration terms regarding expiration dates are enforced. At
注意,终端还可通过在终端维护的期满日期之前不时地向服务进行登记以及在终端所维护的期满日期下向服务进行登机时使其维护的期满日期与服务器维护的期满日期相一致。如果存在差异,则终端可将其期满日期改变成对应于服务所维护的期满日期。Note that a terminal may also have its maintenance expiration date aligned with the server's maintenance expiration date by registering with the service from time to time prior to the terminal's maintenance expiration date and by checking in to the service under the terminal's maintenance expiration date. consistent. If there is a discrepancy, the terminal may change its expiry date to correspond to the expiry date maintained by the service.
在步骤616,服务基于标识符访问注册信息以确定相应的帐户的状态。在判决618,如果已续订注册,则在步骤622,服务向终端发送用于继续持续解锁状态的命令。如果注册尚未被续订,则在步骤620,服务任选地向终端发送用于设置和持续锁定状态的命令。一旦检测到已过了期满日期,终端也可回到锁定状态。At
如以上结合图4A所提及的,被提供给终端的解锁数据可设置运行应用程序的授权期满的时间。此外,不同的所安装的应用程序可具有不同的期满时间。对应用程序专用的期满日期的强制实施可基于以上涉及图6A和6B的讨论来继续进行。As mentioned above in connection with Figure 4A, the unlock data provided to the terminal may set the time at which the authorization to run the application expires. Furthermore, different installed applications may have different expiration times. Enforcement of application-specific expiration dates may continue based on the discussion above with respect to Figures 6A and 6B.
在图6A的示例中,步骤600可被修改以规定终端将应用程序的标识符传达给服务。步骤602可被修改以规定服务例如通过使用应用程序的标识符来确定已被对终端授权的一个或多个应用程序的状态。步骤604可被修改以规定服务确定应用程序是否有效,例如,如果其期满日期尚未达到,则其是有效的。服务可将应用程序的标识符对照已被存储的期满日期。如果应用程序的授权已期满,但帐户仍有效,则步骤608可被修改以规定服务向终端发送用于持续特定应用程序的锁定状态的命令。因而,被授权的应用程序可被认为具有与终端的解锁状态相类似的解锁状态,且不再被授权的应用程序可被认为具有与终端的锁定状态相类似的锁定状态。In the example of FIG. 6A, step 600 may be modified to provide for the terminal to communicate the identifier of the application to the service. Step 602 may be modified to provide for a service to determine the status of one or more applications that have been authorized to the terminal, for example by using the identifiers of the applications. Step 604 may be modified to provide for the service to determine whether the application is valid, for example, if its expiration date has not been reached, then it is valid. The service may compare the application's identifier against a stored expiration date. If the application's authorization has expired, but the account is still valid,
在图6B的示例中,步骤610可被修改以规定终端存储已对终端授权的一个或多个应用程序的期满日期。步骤612可被修改以规定终端确定是否已达到 应用程序的期满日期。终端可将应用程序的标识符对照已被存储的期满日期。如果应用程序已期满,则步骤614可被修改以规定终端从服务确定对应用程序的授权是否已被续订。即使终端的期满日期尚未达到,也可执行此操作。步骤616可被修改以规定服务访问应用程序的注册信息以确定应用程序是否已被续订。服务可将应用程序的标识符对照指示应用程序是否已被续订的数据。步骤618可被修改以规定服务确定应用程序的状态。在判决618,如果已续订应用程序的注册,则在步骤622,服务可向终端发送命令以继续持续应用程序的解锁状态。一旦检测到已过了应用程序的期满日期,终端也可导致应用程序回到锁定状态。因而,应用程序可被认为具有与终端的注册相类似的注册。不同的应用程序可被认为具有不同的注册。In the example of FIG. 6B,
注意,如以上讨论的对图6A和6B的过程的修改可用作图6A和6B中对终端强制实施注册条款的过程的使用的补充和替换。图6A和6B中对终端强制实施注册条款的过程的使用可在与图6A和6B中对应用程序强制实施注册条款的过程的使用不同的时间执行。类似地,图6A和6B的过程对于终端或多个终端的不同应用程序可在不同的时间执行。Note that modifications to the process of FIGS. 6A and 6B as discussed above may be used in addition to and in place of the use of the process in FIGS. 6A and 6B to enforce registration terms on terminals. The use of the process for enforcing registration terms on terminals in Figures 6A and 6B may be performed at a different time than the use of the process in Figures 6A and 6B for enforcing registration terms for applications. Similarly, the processes of Figures 6A and 6B may be performed at different times for different applications of a terminal or terminals.
图6C描绘了图2的步骤230的过程流程图,其中强制实施注册条款。在过程630,终端确定其注册是否已期满。在过程632,终端与服务通信以确定终端是否已注册,例如其注册是否因未续订或对注册协定的违背而已失效。FIG. 6C depicts a process flow diagram of step 230 of FIG. 2 , where registration terms are enforced. At
图7描绘了适于实现各个实施例的计算机硬件的示例框图。计算机硬件可表示例如本文中所讨论的开发者的计算机、终端和/或服务器。用于实现各个实施例的示例性系统包括通用计算设备710。计算设备710的组件可包括处理单元720、系统存储器730以及将包括系统存储器的各类系统组件耦合至处理单元720的系统总线721。系统总线721可以是例如存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。7 depicts an example block diagram of computer hardware suitable for implementing various embodiments. Computer hardware may represent, for example, a developer's computer, terminal, and/or server as discussed herein. An exemplary system for implementing various embodiments includes a general
计算设备710可包括各种有形或非临时计算机或处理器可读介质。计算机可读介质可以是可由计算设备710访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。计算机可读介质可包括计算机存储介质,诸如以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机 存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或能用于存储所需信息且可以由计算设备710访问的任何其他介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
系统存储器730包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)731和随机存取存储器(RAM)732。基本输入/输出系统733(BIOS)包含有助于诸如启动时在计算设备710中元件之间传递信息的基本例程,它通常存储在ROM 731中。RAM 732通常包含处理单元720可以立即访问和/或目前正在操作的数据和/或程序模块。例如,可提供操作系统734、应用程序735、其它程序模块736和程序数据737。
计算机系统710还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图7图解了不可移动、非易失性存储器740,诸如固态存储器,以及从或向可移动、非易失性存储器卡752读取的存储器卡(例如,SD卡)接口/读取器750。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。
计算机存储介质提供对计算机可读指令、数据结构、程序模块、和计算设备710的其它数据的存储。例如,不可移动、非易失性存储器740被示为存储操作系统744、应用程序745、其它程序模块746和程序数据747。这些组件可以与系统存储器730中的操作系统734、应用程序735、其他程序模块736和程序数据737相同,也可以与它们不同。操作系统744、应用程序745、其他程序模块746和程序数据747在这里被标注了不同的标号是为了说明至少它们是不同的副本。开发者可通过诸如键盘/触摸屏762和话筒761等输入设备将命令和信息输入到计算设备710中。其它输入设备(未示出)可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常由耦合至系统总线的开发者输入接口760连接至处理单元720,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。显示器/监视器791也经由接口,诸如视频接口790连接至系统总线721。诸如音频输出797等其它外围输出设备可通过输出外围接口795来连接。Computer storage media provide storage of computer readable instructions, data structures, program modules, and other data for the
计算设备710可使用至诸如远程计算设备780等一个或多个远程计算设备的逻辑连接在网络化环境中操作。远程计算设备780可以是另一移动设备、个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且一般包括上面就计算机710描述的许多或全部元件。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在联网环境中使用时,计算设备710通过网络接口或适配器770连接至另一网络。在网络化环境中,就计算设备710描绘的程序模块或其部分可被储存在远程存储器存储设备中。例如,远程应用程序785可驻留在存储器设备781上。所示的网络连接是示例性的,并且可以使用在计算设备之间建立通信链路的其它手段。When used in a networked environment,
在此所述技术的上述详细描述是为了说明和描述而提供的。并非旨在穷举本技术或将其限于所公开的精确形式。鉴于上述教导,许多修改和变型都是可能的。选择上述实施例来最好地解释本技术的原理及其实践应用,从而使本领域其他人能够在各种实施例中并用各种适于所构想的特定用途的修改一起最好地利用本技术。本技术的范围旨在由所附权利要求书来定义。The foregoing detailed description of the technology described herein has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The above-described embodiments were chosen to best explain the principles of the technology and its practical application, to thereby enable others skilled in the art to best utilize the technology in various embodiments and with various modifications as are suited to the particular use contemplated . It is intended that the scope of the technology be defined by the appended claims.
Claims (15)
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US29662110P | 2010-01-20 | 2010-01-20 | |
| US61/296,621 | 2010-01-20 | ||
| US12/853,608 US8533811B2 (en) | 2010-01-20 | 2010-08-10 | Developer phone registration |
| US12/853,608 | 2010-08-10 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN102130907A true CN102130907A (en) | 2011-07-20 |
| CN102130907B CN102130907B (en) | 2014-05-07 |
Family
ID=44268797
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201110031352.XA Expired - Fee Related CN102130907B (en) | 2010-01-20 | 2011-01-19 | Developer phone registration |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN102130907B (en) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103544409A (en) * | 2012-07-11 | 2014-01-29 | 腾讯科技(深圳)有限公司 | Method for controlling application program, use equipment and server |
| CN107431613A (en) * | 2015-04-20 | 2017-12-01 | 深圳市大疆创新科技有限公司 | Systems and methods for supporting development of movable object applications |
| CN109154802A (en) * | 2016-03-31 | 2019-01-04 | 江森自控科技公司 | HVAC Unit Registration in Distributed Building Management System |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20030149669A1 (en) * | 2002-02-05 | 2003-08-07 | Howells Michael C. | Method and system for licensing intellectual property circuits |
| US20040117615A1 (en) * | 2002-12-13 | 2004-06-17 | O'donnell William | Granting access rights to unattended software |
| EP1320795B1 (en) * | 2000-09-21 | 2005-11-16 | Research In Motion Limited | Software code signing system and method |
| US20070074034A1 (en) * | 2005-09-29 | 2007-03-29 | Research In Motion Limited | System and method for registering entities for code signing services |
| CN101345947A (en) * | 2008-08-29 | 2009-01-14 | 中兴通讯股份有限公司 | Mobile phone locking method, unlocking method, locking device and mobile phone |
| CN101437224A (en) * | 2008-12-22 | 2009-05-20 | 中兴通讯股份有限公司 | Method for updating mobile terminal software and mobile terminal |
| CN101563871A (en) * | 2006-12-19 | 2009-10-21 | 高通股份有限公司 | Programmatic transfer of applications between handsets based on license information |
-
2011
- 2011-01-19 CN CN201110031352.XA patent/CN102130907B/en not_active Expired - Fee Related
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1320795B1 (en) * | 2000-09-21 | 2005-11-16 | Research In Motion Limited | Software code signing system and method |
| US20030149669A1 (en) * | 2002-02-05 | 2003-08-07 | Howells Michael C. | Method and system for licensing intellectual property circuits |
| US20040117615A1 (en) * | 2002-12-13 | 2004-06-17 | O'donnell William | Granting access rights to unattended software |
| US20070074034A1 (en) * | 2005-09-29 | 2007-03-29 | Research In Motion Limited | System and method for registering entities for code signing services |
| CN101563871A (en) * | 2006-12-19 | 2009-10-21 | 高通股份有限公司 | Programmatic transfer of applications between handsets based on license information |
| CN101345947A (en) * | 2008-08-29 | 2009-01-14 | 中兴通讯股份有限公司 | Mobile phone locking method, unlocking method, locking device and mobile phone |
| CN101437224A (en) * | 2008-12-22 | 2009-05-20 | 中兴通讯股份有限公司 | Method for updating mobile terminal software and mobile terminal |
Non-Patent Citations (1)
| Title |
|---|
| APPLE: "《iPhone Development Guide; Development Environments: Xcode》", 6 August 2009, article "《iPhone Development Guide; Development Environments: Xcode》" * |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN103544409A (en) * | 2012-07-11 | 2014-01-29 | 腾讯科技(深圳)有限公司 | Method for controlling application program, use equipment and server |
| CN107431613A (en) * | 2015-04-20 | 2017-12-01 | 深圳市大疆创新科技有限公司 | Systems and methods for supporting development of movable object applications |
| CN107431613B (en) * | 2015-04-20 | 2021-02-05 | 深圳市大疆创新科技有限公司 | System and method for supporting application development of movable objects |
| US11184474B2 (en) | 2015-04-20 | 2021-11-23 | SZ DJI Technology Co., Ltd. | System and method for supporting movable object application development |
| CN109154802A (en) * | 2016-03-31 | 2019-01-04 | 江森自控科技公司 | HVAC Unit Registration in Distributed Building Management System |
| US11768004B2 (en) | 2016-03-31 | 2023-09-26 | Johnson Controls Tyco IP Holdings LLP | HVAC device registration in a distributed building management system |
Also Published As
| Publication number | Publication date |
|---|---|
| CN102130907B (en) | 2014-05-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8533811B2 (en) | Developer phone registration | |
| JP6392879B2 (en) | Mobile communication apparatus and operation method thereof | |
| US9871821B2 (en) | Securely operating a process using user-specific and device-specific security constraints | |
| EP3752946B1 (en) | Production console authorization permissions | |
| EP3039604B1 (en) | Method of authorizing an operation to be performed on a targeted computing device | |
| JP2019169952A (en) | Mobile communication device and method of operating the same | |
| JP6038924B2 (en) | Networking function per process | |
| US8984296B1 (en) | Device driver self authentication method and system | |
| CN101263473A (en) | Processing unit enclosed operating system | |
| EP3163489B1 (en) | Token-based control of software installation and operation | |
| US10936722B2 (en) | Binding of TPM and root device | |
| JP2009521772A (en) | Protected port for electronic access to embedded devices | |
| KR20070084259A (en) | Systems and Methods for Programming Isolated Computing Environments | |
| US20090287917A1 (en) | Secure software distribution | |
| CN106164917A (en) | User-specific application activation for remote sessions | |
| CN110325992A (en) | Long-range management to original computer operating system setting options | |
| US20220092187A1 (en) | Systems and methods for secure certificate use policies | |
| CN105339947A (en) | Protecting anti-malware processes | |
| CN114329358B (en) | Application signature method, system, transaction terminal and service platform | |
| KR20160018554A (en) | Roaming internet-accessible application state across trusted and untrusted platforms | |
| CN102130907B (en) | Developer phone registration | |
| CN104094271B (en) | Dynamic selection of authorization process | |
| KR102026279B1 (en) | How to manage your application | |
| CN110661797A (en) | A data protection method, terminal, and computer-readable storage medium | |
| US20130067533A1 (en) | Generating a test license for a developer application |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150515 |
|
| C41 | Transfer of patent application or patent right or utility model | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20150515 Address after: Washington State Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC Address before: Washington State Patentee before: Microsoft Corp. |
|
| CF01 | Termination of patent right due to non-payment of annual fee | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140507 |