1

我尝试创建一个允许用户为我的服务注册自己的应用程序。问题是我可以将每个用户限制为一个非常重要的帐户我发现我可能可以使用电话唯一 ID 和 windows live id 来做到这一点我还想出了如何在应用程序中获取这些,但是现在我的问题是如何让他们给我!谁能帮助我如何将带有所需用户名的电话 ID 发送到我的电子邮件地址?谢谢

编辑

我使用此代码来获取所需的值

public static class ExtendedPropertyHelper  
{  
    private static readonly int ANIDLength = 32;  
    private static readonly int ANIDOffset = 2;  
    public static string GetManufacturer()  
    {  
        string result = string.Empty;  
        object manufacturer;  
        if (DeviceExtendedProperties.TryGetValue("DeviceManufacturer", out manufacturer))  
            result = manufacturer.ToString();  

        return result;  
    }  

    //Note: to get a result requires ID_CAP_IDENTITY_DEVICE  
    // to be added to the capabilities of the WMAppManifest  
    // this will then warn users in marketplace  
    public static byte[] GetDeviceUniqueID()  
    {  
        byte[] result = null;  
        object uniqueId;  
        if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out uniqueId))  
            result = (byte[])uniqueId;  

        return result;  
    }  

    // NOTE: to get a result requires ID_CAP_IDENTITY_USER  
    //  to be added to the capabilities of the WMAppManifest  
    // this will then warn users in marketplace  
    public static string GetWindowsLiveAnonymousID()  
    {  
        string result = string.Empty;  
        object anid;  
        if (UserExtendedProperties.TryGetValue("ANID", out anid))  
        {  
            if (anid != null && anid.ToString().Length >= (ANIDLength + ANIDOffset))  
            {  
                result = anid.ToString().Substring(ANIDOffset, ANIDLength);  
            }  
        }  

        return result;  
    }  
}  

现在我需要将它们存储在变量中(我无法真正开始工作),然后将它们发送到我的 php 脚本中提取它们

除此之外,我需要要求用户输入他的电子邮件地址并将其也包含在 POST 中,你能帮忙吗?

4

2 回答 2

0

如果“我的服务”是 Web 服务,那么您可以使用 Web 服务而不是邮件系统。

无论哪种情况,您都可以使用 Convert.ToBase64String(phoneId) 将电话 id 转换为字符串。

要从 WP7 通过邮件发送字符串,您需要使用 EmailComposeTask。

于 2012-09-12T12:03:42.933 回答
0

您可以DeviceExtendedProperties.DeviceUniqueIdMicrosoft.Phone.Info命名空间获取。不要忘记申报WMAppManifest.xml

像这样:

<Capabilities>
  <Capability Name="ID_CAP_IDENTITY_DEVICE"/>
  <Capability Name="ID_CAP_IDENTITY_USER"/>
</Capabilities>

在此处链接到 msdn

然后,您可以将此 ID 发送到您的电子邮件:

var emailComposeTask = new EmailComposeTask
{
    To = "your-email@domiain.com",
    Subject = "Test Message using EmailComposeTask",
    Body = deviceId
};
emailComposeTask.Show();

但这会打开一个电子邮件客户端,我不认为那个用户会这么好心给你发一封电子邮件。所以,你最好向你的服务器发送一个 POST 请求

     private void Button_Click(object sender, RoutedEventArgs e)
    {
        //collect all data you need:
        var deviceId = Convert.ToBase64String(ExtendedPropertyHelper.GetDeviceUniqueID());
        var userName = ExtendedPropertyHelper.GetWindowsLiveAnonymousID();
        var manufatcurer = ExtendedPropertyHelper.GetManufacturer();
        //create request string
        //[see the explanation on MSDN][2]
        var requestUrl = string
  .Format("http://myPageUrlAddress.com/script.aspx?deviceid={0}&user={1}&manufacturer={2}",
   deviceId, userName, manufatcurer);


        System.Uri myUri = new System.Uri(requestUrl);
        //create a request instance
        HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(myUri);
        myRequest.Method = "POST";
        myRequest.ContentType = "application/x-www-form-urlencoded";
        //and it will be sent. 
        //Also you need to create GetRequestStreamCallback method to 
        //handle server responce.
        myRequest.BeginGetRequestStream(new
        AsyncCallback(GetRequestStreamCallback), myRequest);
    }
    //this method is empty. You can show tha dialog box about successful sending.
    public void GetRequestStreamCallback(IAsyncResult result) { ; }

电子邮件呢?只需在同一页面上创建一个文本框,并将用户输入保存到一个变量中。

于 2012-09-12T12:04:03.103 回答