如何知道Windows Phone 8应用程序的下载链接

时间:2014-01-21 11:01:41

标签: windows-phone-7 windows-phone-8 share

我正在开发windows phone 8应用程序。我必须在Facebook和Twitter上分享应用程序的下载链接。

在将应用程序发布到Windows Phone商店之前,我怎么知道应用程序的下载链接。

因为我们必须在发布应用程序之前实现共享功能。

我很期待你的回复。

谢谢&问候, 苏雷什

1 个答案:

答案 0 :(得分:0)

基本上您的应用程序下载链接格式如下:

http://windowsphone.com/s?appid=<ApplicationId>
带有<ApplicationId>

ProductID文件中App元素的WMAppManifest.xml属性的值。当您将应用程序提交到市场时,ProductID中的WMAppManifest.xml将被覆盖,因此请避免对其进行硬编码。 This post演示了如何从清单文件中获取<ApplicationId>以及如何使用Microsoft.Phone.Tasks.ShareLinkTask分享它。

更新:

总结一下,创建一个帮助类来从ApplicationID文件中读取WMAppManifest.xml

public class DeepLinkHelper 
{ 
    private const string AppManifestName = "WMAppManifest.xml"; 
    private const string AppNodeName = "App"; 
    private const string AppProductIDAttributeName = "ProductID"; 

    public static string BuildApplicationDeepLink() 
    { 
        var applicationId = Guid.Parse(GetManifestAttributeValue(AppProductIDAttributeName)); 

        return BuildApplicationDeepLink(applicationId.ToString()); 
    } 

    public static string BuildApplicationDeepLink(string applicationId) 
    { 
        return @"http://windowsphone.com/s?appid=" + applicationId; 
    } 

    public static string GetManifestAttributeValue(string attributeName) 
    { 
        var xmlReaderSettings = new XmlReaderSettings 
        { 
            XmlResolver = new XmlXapResolver() 
        }; 

        using (var xmlReader = XmlReader.Create(AppManifestName, xmlReaderSettings)) 
        { 
            xmlReader.ReadToDescendant(AppNodeName); 

            if (!xmlReader.IsStartElement()) 
            { 
                throw new FormatException(AppManifestName + " is missing " + AppNodeName); 
            } 

            return xmlReader.GetAttribute(attributeName); 
        } 
    } 
} 

然后你可以通过这种方式获得/分享下载链接:

new Microsoft.Phone.Tasks.ShareLinkTask() 
{ 
    Title = "My Application Deep Link", 
    Message = "My Application Deep Link", 
    LinkUri = new Uri(DeepLinkHelper.BuildApplicationDeepLink()) 
}.Show(); 

对于以上所有代码,请归功于Pedro Lamas