How to Use Custom Font in Windows Phone 8 Application

When building a Windows Phone app, it’s quite common that we’d like to change the font style of a TextBlock, TextBox and etc. By default, Windows Phone 8 supports fonts for the majority of the writing systems of the world, there are many font families nested in Windows Phone OS, we could take a reference…

2

Bookmarks: code reuse between Windows Phone 8 and Windows 8 apps

Here is the list of available resources for reusing code between WP & W8 store apps. Windows Phone 8 and Windows 8 app development http://msdn.microsoft.com/library/windowsphone/develop/jj714089.aspx Maximize code reuse between Windows Phone 8 and Windows 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681693(v=vs.105).aspx Building Apps for Windows Phone 8 Jump Start: (19) Windows Phone 8 and Windows 8 Cross Platform Development https://channel9.msdn.com/Series/Building-Apps-for-Windows-Phone-8-Jump-Start/Building-Apps-for-Windows-Phone-8-Jump-Start-19-Windows-Phone-8-and-Windows-8-Cross-Platform-Develop…

0

如何获得 Microsoft Push Notification Service(MPNS)的最佳体验

有很多同学抱怨MPNS的各种问题,其中包括服务超时、返回各种错误代码不知如何处理等等。。今天我用一点时间来为大家介绍下如何处理和操作咱们的MPNS。 首先为大家明确一个问题,Microsoft Push Notification Service (MPNS) 是执行的异步推送。今天将介绍如何使用高效的服务将我们的推送信息发送至云端最终发送到 Windows Phone 手机。 第一 如何设置发送超时 对于超时时间我建议大家设置为 15秒。例如:你使用的 ASP.NET 进行数据推送时,建立 WebRequest 对象设置超时时间 HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; request.Timeout = 15000;     第二 处理推送通道的更新 当你的客户端程序发现推送通道更新后,应用一定要将最新的推送通道 URL 更新到你的服务器端。要保证您的服务器端的推送通道是最新的。建议你可以使用 device ID 与推送通道进行匹配,如果发现推送通道的URL更新就立刻进行推送通道更新,服务器通过device ID进行判断是,新用户注册还是已有用户的推送通道更新。 Windows Phone 的官方资料中提供了如何建立一个接受推送消息的应用代码示例,其中包括了如何处理,推送通道更新事件。您可以参考 如何发送和接收 Windows Phone 的磁贴通知 了解如何使用PushChannel_ChannelUriUpdated方法。(另:推送通道长度也许会超过 1024 characters) 第三 使用已验证的 Web 服务以发送 Windows Phone 的推送通知 使用MPNS认证端,如果你的推送服务针对一台WindowsPhone设备24小时内推送消息数量超过500条,或者您想更安全的推送消息。另使用没有MPNS验证的终端进行推送,每日的推送限额是500条/每个device。 如何设置…

0

Windows 8 Store App 以及Windows Phone App分享功能的实现,以及主流社交应用的SDK资源

在这个章节我们主要谈论一下关于W8/WP Store App的社交分享功能,这也是一个广泛讨论的课题。而就在几个小时之前,微信作为亚洲最大用户群体的移动即时通讯app,对外发布了为WP app服务的SDK,这更加促使我们在这里为大家收集一些比较有价值的信息以及第三方实现了分享功能的SDK和服务,以满足大家的开发需求,特别是对于当前分享功能相对有限的Windows Phone 平台。   Windows Store App中的分享   Windows Store App原生在charm bar就提供了分享按钮(share),app最直接方便的分享方式就是实现share contract,作为share source来对外发布希望分享的内容,而只要系统已经安装了实现share target contract的app,则可以接收这类分享。相关的API大部分都在Windows.ApplicationModel.DataTransfer 命名空间下面。整个分享机制可以理解为以下几个步骤: 1. 在app全局或者页面注册DataRequested事件,这个事件会在用户激活charm bar上面的分享按钮时候触发。在事件中,所需要做到的就是把当前上下文中的有用的信息填入到一个需要最终传递到外部的share package (DataRequestedEventArgs.Request)中,这个package有许多常用的在分享场景中所需要的属性,如标题、缩略图、图片、正文等等。 2. 实际上这个event handler走完,对于share source app来说就完成任务了。而对于接收方share target app来说,需要在appmanifest中声明Share Target Declaration,并配置能够接收哪些类型的share,比如HTML、文本、位图等等。接下来系统会把符合当前这个share package要求的能够正确接收这类分享内容的app都列出来,由用户来选择分享到哪里去。 3. 在share target app中还需要实现若干个全局事件,以应对app被share charm激活并传入响应的内容和文件。 MSDN中的详细参考,请移步: Sharing and exchanging data Sharing content source app sample Sharing content target app sample…

0

Win8/WP store app的代码安全与混淆

我们在为Top App的技术支持过程中,一直有收到关于Windows 8 & Windows Phone商店应用的代码安全解决方案的询问。在这篇文章中,我简单地把我们收集到的信息做一个总结。所以很抱歉这篇文章并不是一个解决方案。 当前Windows Phone 8支持C#/VB.NET、C++来进行开发,而Windows 8 Store App则再多一个JS。     Windows 8 Store App   Win8 store app的package上传到store之后,只会在签名层面多一些处理,而不会牵涉到任何的代码保护或者混淆措施。所以我们在本地的app安装目录下,可以直接拿到.Net app的IL dll,或者直接用写字板就能打开HTML/WinJS app的代码。 微软没有官方的代码混淆解决方案或产品。我们有找到以下几个能够混淆Win8/WP store app (.NET)代码的第三方解决方案,不过比较遗憾的是这些都是收费应用,但基本都提供了试用版。其中第一家preemptive,好几代的VisualStudio中都集成了其Community Edition,但遗憾这个版本并不支持Win8/WP store app。这些第三方产品都不在微软的官方技术支持范围内,我们亦不保证能够完美运行,所以在上传您的app之前,希望多加测试。 .NET Obfuscation (Marketplace/Professional edition) http://www.preemptive.com/products/dotfuscator/dotfuscator-for-marketplace-apps Eazfuscator.NET http://www.gapotchenko.com/eazfuscator.net Babel Obfuscator http://www.babelfor.net/ Crypto Obfuscator For .Net http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm Skater .NET Obfuscator http://rustemsoft.com/obfuscator_net.asp 而对于WinJS,理论上市面上提供javascript minify的工具都应该能够提供解决方案,我们有找到 jscrambler https://jscrambler.com/…

0

关于给WP推送通知启用HTTPS验证的细节

关于整个推送机制, 如何建立推送通道,在服务端和客户端的代码实现,互联网以及MSDN已经有无数中英文资料和示例了。然而,如果希望启用HTTPS推送,相关的资料就很少了。在这篇文章中我们主要希望谈论一下关于Windows Phone中为推送通知Push Notification启用HTTPS验证的一些所需要注意到的细节。 在默认情况下,Windows 8 store app的所有推送都是启用了HTTPS验证的,但是对于WP来说,默认情况下所有推送通道都是基于安全性较低的非加密通道HTTP,所以出于信息安全的考虑,我们推荐开启为推送通知开启HTTPS。除此之外,启用推送HTTPS验证的好处在于,能够解除每个推送通道每天500条推送的上限。而且最主要的是,除了开发商需要花钱购买一个受信任的证书以及一个WP开发者账户,一切都是免费的。 关于HTTP通讯的500条上限的解释,MSDN中的原文是这样的: There is no daily limit on the number of push notifications an authenticated web service can send. Unauthenticated web services, on the other hand, are throttled at a rate of 500 push notifications per subscription, per day. 很多开发者对于这里关于“per subscription, per day”的描述有一些理解偏差。实际情况是,基于对一个APP来说,在一个WP设备上,只能申请到一个Push Notification Channel (“subscription”),而每台不同设备的APP所能申请到的Channel Uri都是独特的,那么这里的限制就是对于这一个Channel Uri,只能够推送500个。所以说,对于每一个APP,HTTP推送在每个单独设备上的每日上限是500个,APP互相之间额度也不共享不冲突。…

0

如何在Windows Phone和Windows 8 Store中获取到设备ID

背景 很多情况下,我们需要去辨识当前App运行的设备,以便应用一些适合此设备的内容。Windows Phone 7时代,我们有一些原生的去获取设备号的方法。但是来到Windows Phone 8时代,却有些改变。至少在Windows 8 RTM中,获取Unique ID的方法消失了。但是这个问题在这一年里被广泛的提及。 解决方法 Windows Phone 7.X 典型用法: (注意:不要忘记把ID_CAP_IDENTITY_DEVICE加入到App Manifest里面) 1: byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue(“DeviceUniqueId”); 2: 3: string DeviceIDAsString = Convert.ToBase64String(myDeviceID); 在Microsoft.Phone.Info.DeviceExtendedProperties中有一句话需要注意: 在 Windows Phone OS 7.0 中,此类被用来查询特定于设备的属性。在 Windows Phone OS 7.1 中,DeviceExtendedProperties 的大多数属性已弃用,而应改用新的 DeviceStatus 类。但是,在适当时,您仍然可以使用以下任何未弃用的属性。 不管怎样,我们依然需要使用DevieExtendedProperties去获取“DeviceUniqueID”。因为在新的Microsoft.Phone.Info.DeviceStatus中没有被提及。 Windows Phone 8 当然,上文提及的API在Windows Phone 8中还是可以使用的。但是新的API在Windows Phone 中也有所提及。使用HostInformation.PublisherHostId可以直接获取到一段包含设备号的string。并且,这个API可以在.NET和C++中使用。不过,这里也有一些改变,对于在Windows Phone 8或后续版本中运行的不同的Windows Phone 8的app来说,DeviceUniqueID的值也是不一样的。换一种说法也就是,两个App分别被不同的Windows…

0

学用Windows Phone 8中Hyperlink和Command

偶然得知,Windows 8.1中把Hyperlink加到了XAML中去了,这使我想到Windows Phone中也早已把相同的元素加进去,但是罕有文档说明。 接下来,我将演示一下,如何在Windows Phone 8中通过Hyperlink来实现导航和激活事件。 首先,我们需要在Visual Studio中新建一个Windows Phone的工程,并加入以下XAML: 1: <TextBlock x:Name=”tb1″></TextBlock> 2: <RichTextBox> 3: <Paragraph> 4: <Hyperlink>First Link</Hyperlink> 5: Some Text 6: <Hyperlink>Second Link</Hyperlink> 7: </Paragraph> 8: </RichTextBox> 现在,按下F5启动调试,这里我们能看到界面中有两个超链接存在。下面,我们在一个链接中加URL,在另外一个链接中添加一个事件。 1: <TextBlock x:Name=”tb1″></TextBlock> 2: <RichTextBox> 3: <Paragraph> 4: <Hyperlink NavigateUri=”/Page1.xaml”>First Link</Hyperlink> 5: Some Text 6: <Hyperlink Click=”Hyperlink_Click”>Second Link</Hyperlink> 7: </Paragraph> 8: </RichTextBox> 最后,我们演示一下Hyperlink.Command。这个Command是一个激活动作,而不是一个绑定在按钮上的事件。在这里,我们需要给它绑定一个动作: 1: <TextBlock…

0

Windows Phone 8 内购FAQ

尽管MSDN里有一篇很好的关于Windows Phone 8内购的文章,我们这里还是收到很多内购相关的问题。这篇博客旨在为了补充MSDN文章中没有涵盖的一些细节。 我们听到很多有关于Windows Runtime和Windows Phone Runtime互相共享代码的事情。而且,的确内购部分是相互共享的。事实上,我们在MSDN上看到的有关于Windows Phone的文章数远远大于Windows Store。而且,由于很多API是Windows 8中独有的,例如 CurrentAppSimulator,ProductLicense.ExpirationDate等等,所以我们在阅读这些文章的时候要多加注意。 这篇博客主要是适用于Windows Phone的内购,不过,Windows 8 Store App和Windows Phone Store App在内购方面的流程还是很相似的。 MSDN相关文章: In-app purchase for Windows Phone 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206949(v=vs.105).aspx In-App Purchase API overview for Windows Phone 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206950(v=vs.105).aspx In-app purchase testing for Windows Phone 8 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681689(v=vs.105).aspx Mock In-App Purchase Library http://code.msdn.microsoft.com/wpapps/Mock-In-App-Purchase-33080f0c In-app product properties http://msdn.microsoft.com/en-us/library/windowsphone/help/jj206721(v=vs.105).aspx In-app product…

3

Beginning with Hyperlink and Command in Windows Phone

Occasionally read the XAML control changes for Store App development in Windows 8.1, an interest thing notified me is that Windows 8.1 adds the Hyperlink element to XAML text object model, which recalled me that the same element has been added into Windows Phone already, but with less documents for its use. In the following…

0