Windows Mobile和Windows Mobile 6的我的经验(译文)
By S.F.
本文链接 https://www.kyfws.com/news/my-experience-with-the-windows-marketplace-for-mob/
版权声明 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
- 21 分钟阅读 - 10400 个词 阅读量 0Windows Mobile和Windows Mobile 6的我的经验(译文)
原文地址:https://www.codeproject.com/Articles/67188/My-Experience-with-the-Windows-Marketplace-for-Mob
原文作者:Joel Ivory Johnson
译文由本站翻译
前言
我在Windows Marketplace for 6.x设备和认证过程方面的经验.
介绍
几个月前,我在Windows Marketplace for Mobile上注册. 我想创建一个简单的应用程序并通过认证,以便我可以看到过程是什么样的(并写出来!).在这一点上,我已经看到了通过市场认证失败的感觉,通过认证,并已提交产品更新. Microsoft一直在根据用户反馈跨其界面,规则和过程对Windows Marketplace for Mobile进行更改.在我开始编写本文档的过程中,一个周末提交申请的界面经历了几次更改.为了使该文档更相关,我等到这些更改解决后才能完成并发布本文档.
本文件是或不是
本文档不是通过认证的指南. Microsoft已经发布了指南.本文档只是我的经验,从其他人那里收集的有关他们的经验以及我的一些想法的信息的集合.如果您认为这可能对您有所帮助,请继续阅读.无论哪种方式,如果您打算将应用程序提交到Windows Marketplace for Mobile,都应访问http://developer.windowsphone.com以阅读认证过程.随着时间的推移,我们已经对开发人员信息中心和认证流程进行了调整,或者说我的想法和经验涵盖了通过认证所需知道的一切.
关于守则
本文所附的代码实际上通过了Marketplace认证并获得通过.我编写该代码的目的是撰写本文,而不是为此付费.在几次对话中,MSMobiles.com上的一些人敦促我为该应用程序付费,而不是免费提供.为了向他证明该应用程序不会出售,我在上面定价.两周后,我卖出了几乎足够的副本来支付注册费用.我制作了该应用程序的更新版本,并将其推销给为该应用程序付款的应用程序,而原始源代码可在此处供您查看.但是,本文与代码完全没有关系,我认为代码对本文而言更是附带的,而不是对其的支持.我之所以加入它,是因为我敢肯定有人会看它.
注册
对我来说,注册过程很容易.我住在美国,并正在以个人身份注册.由于我是以个人身份注册的,因此我发布的任何内容都必须使用我的法定姓名.我更喜欢以我的网站(j2i.net)的名称进行发布,但这不是一个选择.除了在网上填写表格作为注册过程的一部分外,我还必须打印出一张表格,该表格在大多数情况下表明我是我的身份,并由公证人签字并盖章.我在我的银行这样做,因为他们免费为帐户持有人公证了文件.该文件的复印件以及政府签发的身份证件的副本已通过电子邮件发送给GeoTrust.几天后,我接到了GeoTrust的电话,他们要求我验证我的姓名和其他一些信息.与GeoTrust交谈后两天,我的帐户已启用,并且可以访问Marketplace仪表板.
申请指南和规则
公开指南(PDF链接公开可用.在等待身份验证时,建议您熟悉准则.对于Marketplace的规则数量,我已经看到了很多负面的说法.尽管规则的数量看起来令人生畏,但是当您实际查看规则是什么时,它们并没有那么糟糕.根据您的应用程序,您可能会发现某些规则不适用于您计划发布到Marketplace的应用程序.当前,本文档的目录列出了七个需求部分: 我没有发布窗口小部件,所以立即可以看到文档的窗口小部件部分没有适用于我的应用程序的内容.一些规则适用于替代输入法编辑器(例如自定义屏幕键盘)的应用程序.这些也不适用于大多数应用程序.为了确定我关心的规则,我需要确定所发布应用程序的性质.由于我只是为了通过认证过程而创建此应用程序,因此手电筒应用程序就足够了.我决定使用功能更强大的产品.我制作了一个可以显示GPS接收器速度的应用程序.该应用程序将使用.NET 3.5 Framework编写,并将在所有屏幕分辨率的Windows Mobile Professional(带触摸屏的设备)上运行.应用程序既可以针对Windows Mobile 6.x的所有版本,也可以针对Windows Mobile 6.5.我看不到任何原因,像这样的应用程序需要WM 6.5特定功能,因此我决定针对所有WM 6.x版本. (此应用程序也应该在Windows Mobile 5上运行.但是我还没有尝试过.) 有关认证过程和规则的几点注意事项:认证测试仅针对计划部署到客户的确切安装进行.在论坛上提出了一些问题,在该论坛中,有人希望对其应用程序的版本进行认证,以期对即将发布给客户的版本进行小幅调整.还有一些关于在发布之前完成一些其他部分代码的计划提交测试的问题.无法做到这一点.在提交认证之前,该申请必须完整,如果您对申请进行了任何更改,则将需要重新认证.另请注意,认证测试不是质量测试.如果您的应用程序在认证过程中开始崩溃,那肯定是失败的成功之道,但是通过认证并不能保证该应用程序不会崩溃.此代码通过认证的第一个版本具有竞争条件,可能导致其锁定并崩溃,但是这种条件非常罕见,因此从未在认证测试中发生过.我在提交申请后就抓住了它,并且在通过之后,我从未公开过1.0版本,因此我可以更正1.1版本中的问题.
满足可靠性规则
可靠性规则可在规则文档的第4至11页上找到.这是迄今为止文档中最大的部分(所有规则共占31页文档的14页).可靠性下有21条规则.我将全部提及它们,尽管其中一些不适用于我的应用程序.到目前为止,满足这些要求是认证文档中最重要的部分,因此我的大部分时间都花在了这里.
1.1安装包
如果您使用Visual Studio创建安装,则不必担心此安装.它仅说明您的出租车必须包含_SETUP.XML. Visual Studio将自动执行此操作.
1.2安装警告消息
如果您曾经在Windows Phone上安装了较旧的Windows Mobile应用程序,则可能会看到一条错误消息,指出该应用程序是针对Windows Mobile的早期版本制作的,可能无法在手机上正常运行.通过将部署项目上的OS Version Max设置为适当的值即可解决此问题(我在CAB项目中将其设置为6.99).
1.3开始菜单或开始屏幕上的快捷方式
简而言之,该规则表示您必须在"开始"菜单中找到应用程序的快捷方式. Windows Mobile 6.5 Shell可以使用PNG文件作为应用程序的图标.对于您创建的用作图标的PNG文件,必须创建一个注册表项. Windows Mobile 6.0/.1使用我们都已经习惯了的* .ICO图标.对于Windows Mobile 6.5,要求您的应用程序使用PNG图标.该要求可能会造成混淆.早些时候,在MSDN论坛中,一些开发人员谈到只针对Windows Mobile 6.0/.1,这样他们就不必担心PNG图标.由于Windows Mobile 6.5设备也可以使用6.0/.1应用程序,因此避免PNG图标似乎是将应用程序发布给客户的最简单途径.这种误解后来得到了解决.
由于Windows Mobile 6.0/.1应用程序也可用于6.5设备,因此它们也受6.5要求的约束.因此,您的应用程序必须具有PNG图标才能通过认证. T here是几种获取方法完成了到目前为止,最简单的方法是为您的部署创建90x90 PNG图标,并将条目添加到部署项目注册表编辑器.您可以在[此处](http://www.j2i.net/BlogEngine/post/2010/02/19/Windows-Phone-Deployment-Patterns-Part-1-of-n .aspx).简约地说,这意味着您将在此处将注册表项输入到HKLM \ Security \ Shell \ StartInfo \ Start \ <shortcutname.lnk>/02/19/Windows-Phone-Deployment-Patterns-Part-1-of-n.aspx)
<shortcutname.lnk>`应该替换为快捷方式图标的名称.您需要向此名为Icon的键添加单个字符串值,其中包含PNG文件的绝对路径.由于您不知道将在其中安装应用程序的文件夹的名称,因此您不知道提前的绝对路径.但是,您可以指定%InstallDir%代替安装文件夹,在安装时它将被正确的路径替换.
对于Windows Mobile 6.0/.1目标,仍然需要ICO文件.为了创建ICO图标,我使用了免费的图标编辑器IcoFX.它具有从另一个文件导入图像的选项,以及创建不同分辨率的其他图标的选项.
1.4仅在指定目录中存储文件
\ Windows目录中只能安装共享组件.应用程序的所有其他文件都应存储在应用程序的文件夹中.
1.5保留ROM中的文件
不要覆盖设备ROM映像中的任何文件.现在也可能是指出微软发布自己的应用程序时不受相同限制的好时机.如果已安装Office 2010 Beta,则设备ROM中的GDI + DLL将被GDI + DLL的更新版本覆盖(阴影).如果您编写了任何GDI + Windows Mobile应用程序,则安装Office 2010 Beta可能会破坏它们(注意:尽管Windows Mobile应用程序中存在GDI +的子集,但[Windows Mobile从未支持GDI +] [http://j2i.net/BlogEngine/post/2010/02/25/Avoid-the-Undocumented-and-unsupported-functions.aspx),因此永远无法保证Windows Mobile设备上将提供该功能.
1.6应用名称长度
您的应用程序名称必须少于70个字符.即使这不是一个规则,我也看不出有多少人愿意遵守这一界限.
1.7干净安装和卸载
您的应用程序应正确安装和卸载.
1.8清理数据
在安装或首次运行期间创建的文件应被删除.可以保留用户使用您的应用程序创建的应用程序文件(例如:如果您创建了文字处理程序应用程序,则可以保留文档文件).您也可以离开应用程序的文件夹结构.在Marketplace中提供的应用程序的第一个版本中,我故意留下了一个设置文件,因此,如果该用户重新安装该应用程序,则该用户的设置将保留下来.因此,在卸载应用程序后,该应用程序的文件夹也继续存在(因为它包含设置文件).允许保留的文件类型包括:
1.9安装在RAM中,请勿这样做!
我什至不知道如何将文件放在RAM文件系统中.老实说,我没有为这个担心.如果有人可以解释,请启迪.
1.10主屏幕文件
不适用.
WM 6.5上的1.11 GAPI
不适用.
1.12 WM 6.1上的GAPI
不适用
1.13多设备支持
您的应用程序必须能够在满足您通信规范的一台以上设备上运行.为了兼容,请选择支持的分辨率和所需的硬件.从协助市场论坛中的其他人开始,我想这是另一个潜在的混乱点.为了传达硬件要求,有一个带有复选框的表格,允许您选择目标设备中必须存在的硬件.如果用户的设备不具备您在此处检查的所有功能,则您的应用程序将对市场中的用户不可见.我已经看到开发人员检查了键盘要求,但并未意识到该要求意味着用户的设备必须具有物理键盘.我也知道可以在没有GPS的情况下使用的另一个应用程序.但是开发人员检查了GPS要求,使该应用程序仅对手机中装有GPS接收器的用户可用.如果您在本节中犯了一个错误,并且在提交认证申请之前没有进行更新,则只有在提交申请更新后才能进行更改.
除硬件要求外,还必须选择兼容的屏幕分辨率.像硬件要求一样,如果用户的设备不符合您选择的屏幕要求,则当用户浏览市场时,该应用程序将不会在用户的市场中显示.有些分辨率仅在Windows Mobile Standard设备(不带触摸屏的设备)和Windows Mobile Professional设备(带触摸屏的设备)上可用,而大多数分辨率在这两种设备上都可用.我选择了Windows Mobile Professional设备可用的所有分辨率.由于应用程序中UI的扩展方式,它将可以在所有这些分辨率下使用.
1.14单个应用程序实例
一次只能运行一个应用程序实例. .NET框架会自动为您处理大多数代码.如果快速连续多次启动应用程序,则可以创建多个实例,但是我并不担心有人这样做.测试人员也不是.因此,我不需要为此做任何事情.
1.15从省电模式中恢复
如果设备进入待机状态并退出,则您的应用程序不会因此而崩溃.我不需要为此做任何事情.我看到的应用程序在待机时会出现问题,这些应用程序依赖于外部硬件(例如:蓝牙连接或通信端口).进入待机状态可能会关闭与这些外部设备关联的连接和文件句柄.并非旨在解决此问题的应用程序可能会崩溃.如果您的应用程序通过Wi-Fi连接进行通信,则进入待机状态可能会关闭Wi-Fi适配器的电源,并且当设备退出待机状态时,它可能会延迟重新上电的电源-这可能是另一种情况导致未准备好的应用程序出现问题.
1.16任务管理器
该应用程序必须在运行时显示在任务管理器中(注意:如果您的应用程序在标题栏中没有标题,则不会显示在任务管理器中).我知道有一个开发人员未能通过此认证,因为开发人员一旦失去重点就立即终止了他的申请.对于测试人员来说,这似乎是一个不会显示在任务管理器中的应用程序.
1.17料斗测试
料斗测试是针对应用程序的压力测试.它产生随机的按键和屏幕点击.您的应用程序必须能够针对Hopper应用程序进行2小时的测试,并且不会崩溃.您可以在此处找到Hopper的下载文件(http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=2a1e5c97-aede-4234-bc73-345475310942).尽管这是认证的一部分,但这不是质量检查测试.通过Hopper的应用程序仍可能具有导致崩溃的代码路径.
1.18不要禁用错误报告
您的应用程序不应禁用Windows错误报告.
1.19正常关机
该应用程序必须能够关闭而不会崩溃.关闭可能是由用户启动的,或者是由于内存不足而关闭了应用程序.因此,我第一次尝试未通过应用程序认证.尽管用户关闭它时应用程序没有问题,但是如果应用程序被任务管理器杀死(测试人员模拟Shell杀死应用程序的方法),则该应用程序的工作线程不会被杀死并继续运行.当它试图封送对UI的调用(与主线程一起被杀死)时,它将崩溃.为了解决这个问题,我只需要在主窗体的Closing
事件期间杀死工作线程.
1.20等待光标支持
如果应用程序正忙于执行足够长的时间以使UI显得无响应或被锁定,则必须显示等待光标.我对此应用程序并不担心.
1.21使用MFC的应用程序必须静态链接到MFC运行时
再一次,不适用,因为这是一个.NET应用程序.
其他规定
认证指南中还有其他一些规则.总而言之,应用程序不应干扰电话的接听能力.该软件不应为恶意软件.该软件不应更改系统设置/首选项.并且,该软件必须在打开数据连接之前通知用户.
将应用程序上传到市场
请注意,还有一个视频可用的上传过程. 您可以在开始编写应用程序之前开始填写提交表单.在将应用程序上载到市场之前,您需要收集一些东西:
收集了此信息后,请从http://developer.windowsphone.com登录到开发人员仪表板,然后选择"添加产品"按钮.系统将提示您指定要添加小部件还是应用程序.我选择了应用程序,然后进入一种形式,可以在其中选择应用程序的名称,它支持的Windows Mobile版本以及应用程序的版本号. 对于次要版本号,总是选择0作为初始版本.您可以免费更新应用程序,直到应用程序的x.9版本.如果要从x.7版本开始,那么您将只能在消耗提交积分之前再进行两次更新.这样的结果是[您的应用程序的内部版本号可能最终不同步](http://www.j2i.net/BlogEngine/post/2010/01/13/App-Versions-and-the-Windows -Marketplace-for-Mobile.aspx),以及市场上所述的版本.如果您仅通过Marketplace进行分发,则使这些数字保持同步应该没有问题.如果显示应用程序中应用程序的版本号,则可能需要[添加代码以提取版本号](http://www.j2i.net/BlogEngine/post/2010/01/11/Auto-Updating -Version-Text.aspx)来减少程序集元数据中必须更新的位置数. 下一个要在提交过程中填写的表单包含产品描述和功能.在这里,您可以输入对应用程序的简短描述,也可以输入要针对应用程序指出的三到五个功能.
在提交过程的第3步中,您将能够上传应用程序二进制文件并提供支持信息.在同一页面上,如果您的应用程序安装需要提升的特权,则可以在此处选择"特权模式数字签名".对于我的应用程序,我可以将此设置保留为默认设置"正常模式数字签名".
在提交过程的第4步中,您将上传产品图稿.这将始终包含4个PNG图标和至少一个针对您的应用程序的屏幕截图.以前,这是很容易使认证失败的地方.如果您上传错误尺寸的图像,则实际上将浪费认证尝试(价值99美元).现在,此页面将验证您上传的图标的大小,并防止您在图标不正确的情况下进行进一步操作.您上传的四个图标的尺寸必须为45x45\64x64\36x36和60x60.这些图像与"开始"菜单中程序图标所使用的图像相同,但是没有要求这些图像必须相同.屏幕截图也有尺寸限制.我所有的屏幕截图均为240x320.它们也可能是315x420.
提交过程的第5步是指定您的申请要求.我刚才谈到了这些要求.我没有提到的一项是,您可以在此处指定应用程序所需的.NET Framework版本.如果用户设备上没有所需的版本,则Marketplace将负责安装它.当然,如果您的应用程序是用本机代码编写的,则可以指定不需要.NET框架. 提交过程的第6步是为您的应用程序指定类别和价格.您输入的价格信息将影响该应用程序对其他国家/地区客户的可见性.如果您只希望该应用程序可供您将应用程序上载到的市场中的客户使用,则只需选择该地区的价格.如果来自其他地区的用户浏览了您在其中上传了应用程序的目录,如果未为其所在地区指定价格,则该应用程序将不会显示.
输入所有信息后,您可以提交认证申请.提交申请后,它就不再可用.如果没有使用提交积分,则无法取消该过程.因此,在单击该按钮之前,请确保您确实准备好将应用程序发布到测试中.如果您提交了该应用程序,但是片刻之后才意识到您提交了错误的版本或需要更改某些内容,那么您将无能为力.您可以要求不对您的应用程序进行测试,但这不会阻止您失去认证尝试信用.因此,如果您提交然后意识到需要进行某些更改,那么最好只是让它完成认证测试,这样您就可以获得可能不符合要求的其他任何方面的反馈. 认证过程的时间可能会有所不同.我已通过认证将该应用程序发送了4次(一次失败尝试和三次通过尝试).平均而言,通过认证大约需要5天.花费了长达10天的时间.当应用程序认证过程完成,通过或失败时,将发送一封电子邮件,通知该应用程序的状态已更改.
登录开发人员仪表板后,将显示应用程序的状态.如果应用程序通过了认证,则其在仪表板中的状态将为"准备发布".应用程序达到此状态后,可以通过选择"提交到目录"使其可见.将应用程序提交到目录后,几分钟到12小时内的任何时间,用户都可以看到它.
我正在将我的申请提交到多个市场.我等到应用程序通过认证后,然后再转到开发人员仪表板的产品选项卡,找到了我的应用.应用程序订单项右侧的设置图标可以选择提交到其他市场.选择此选项会使CAB和应用程序要求自动复制.不幸的是,它不会导致产品说明或屏幕截图被复制,因此有必要再次上传.我发现将通过的申请提交到另一个市场比提交新的认证申请要快.申请通过新市场认证平均需要大约5到6个工作日. 一旦应用程序销售了足够多的副本以超过200美元的付款阈值,我在仪表板上收到一条通知,看起来很像是一个错误.错误是"银行数据待验证".乍看之下,这个错误令我震惊.
当我调查错误的细节时,事情变得更有意义了.此错误的详细信息如下:
Your banking information has been received, but we have not attempted to deposit royalty
funds in your account. Once we are able to successfully fund your account,
this message will no longer appear.
换句话说,对您提供给Microsoft的银行帐户信息进行验证的最终形式是,是否可以将资金成功存入该帐户.成功收到第一笔付款后,我将不再看到此错误.
报告书
开发人员仪表板中提供两种报告类型:实现报告和特许权使用费报告.要生成报告,请填写表格以询问基本参数,例如您希望报告基于单个市场或您拥有产品的所有市场,还是选择报告是否基于最近七个市场天,迄今为止的一个月,30天或90天.选择所有参数并请求报告后,您会收到一条通知,通知您正在生成报告.报告生成完成后,您会收到一封电子邮件通知.到目前为止,生成报告的时间还不太长.请求报告后,我可以转到仪表板的另一个区域,然后返回以查看我的报告正在等待.报告为XML格式,可直接打开到Microsoft Excel. 履行报告非常适合了解有多少人下载了您的应用程序以及何时下载了您的应用程序.版税报告包含有关您已收到的付款的信息.由于尚未收到我有资格获得我的第一笔付款,但此报告对我来说是空白的(收到后,我计划更新本文以包含其中包含的信息类型).
寻求支持
仪表板首页上有一个"联系支持"链接,用于打开用于提交支持请求的表单.我只提交了一个支持请求,并于当天晚些时候收到了一些回复.根据我在Marketplace早期的MSDN论坛上阅读的来自其他开发人员的消息,该支持链接不太可靠. 对于一般性问题,我建议您在MSDN开发人员论坛论坛中发布问题(不要犯以下错误)在[用户论坛]中发布(http://social.microsoft.com/Forums/en-US/marketplacewindowsmobile/threads)).在发布问题时,如果是关于已提交并批准的应用程序的问题,则需要包括应用程序的名称,遇到问题的市场以及该应用程序的产品ID(产品当您在仪表板上查看有关应用程序的信息时,ID将显示在页面底部.当有人发布诸如"我在市场上找不到我的应用程序,它在哪里?“之类的问题时,任何人都很难给予帮助,并且总是会要求您提供更多信息.带有所有所需信息的问题的措辞可能如下:“在en-US Marketplace中找不到我的应用程序SpeedTracker.我的应用程序的产品ID为9038f34f-2cda-4a3e-9bbb-81978b88a6bb.“如果您在Marketplace论坛主题中提出问题,并决定将该问题提升为支持请求,请记住在支持请求中引用该主题的链接.
用户评级和支持
我在Microsoft支持论坛以及从阅读用户论坛和开发人员论坛,似乎在用户中流行一种行为.与应用程序不满意的用户相比,对应用程序不满意的用户倾向于对应用程序进行评级.同样,遇到应用程序问题的用户似乎也不知道该应用程序的开发人员已提供了支持信息.我遇到了许多用户,他们在应用程序中遇到问题,并通过在用户论坛中提问来进行响应(在这种情况下,我尝试将用户引导回应用程序的发布者),或者只是对应用程序评分不佳而继续前进.我还没有经过测试的解决方案,但是看到这种行为使我想知道提高应用程序内支持信息的可见性是否会激励用户与应用程序的发布者进行互动,然后再给应用程序评分不佳.
应用程序可用性问题
关于Marketplace,我仍然有疑问.当应用程序不再可用时会发生什么?用户没有获得批准的方法来使用CAB重新安装应用程序.相反,如果用户需要重新安装应用程序,则可以通过Marketplace客户端重新下载该应用程序.但是,如果将应用程序有效地从市场中删除会发生什么?删除应用程序可能有多种原因. ISV/开发人员可以决定删除该应用程序.如果开发人员/ISV不会每年更新其Marketplace帐户,则其应用程序将自动删除.同样,如果对应用程序进行了更新,并且该更新与该应用程序的先前版本具有不同的要求,则可能使该应用程序不兼容,因此对于某些先前的购买者而言不可用.尽管我已经找到发生这种情况的实例,但我仍无法找到关于这些问题的明确答案.
市场何时可在"我的区域"中使用
用户或开发人员每隔一段时间就会发布一个问题,询问何时在其所在地区可以使用Windows Marketplace for Mobile.开发商还询问他们是否可以注册以在其他地区出售应用程序,因为该地区尚不存在市场(例如:来自以色列的开发商希望注册以在美国出售).对于这些问题,Microsoft员工最普遍的回答是Microsoft正在寻求扩大地理覆盖范围,并在适当时提供更多信息.似乎尚未公开披露扩大Marketplace足迹的时间表.到目前为止,似乎销售或购买应用程序的资格登记取决于该地区是否支持该市场.如果您所在的地区没有该市场可用于购买应用程序,那么您也将无法注册在该地区或任何其他地区的销售.
有什么问题吗
我强调了我的想法和经验.如果您希望我进行任何扩展,请在评论区域中提出一个问题,我将尝试回答.如果您总体上有关于Marketplace的问题,那么最好的询问场所是[Microsoft Windows Mobile Developers Marketplace市场](http://social.msdn.microsoft.com/Forums/en-US/category/Windows Phone).
历史
许可
本文以及所有相关的源代码和文件均已获得The Code Project Open License (CPOL)的许可。
.NET3.5 VS2008 WinMobile .NETCF .NET Visual-Studio Dev Intermediate WinMobile6 新闻 翻译