locked
AppBar Feedback button RRS feed

  • Question

  • Hi,

    A number of applications (Photos app is one example, Calendar is another) have a Feedback button on the AppBar.
    I think I recall seeing a Feedback button on more apps in the Dev Preview or the Consumer Preview than I am noticing now.
    I also thought I remembered hearing something about a Feedback framework of some sort when I was at Build, but that may just be my imagination or maybe I am confusing something I heard about the store ratings feature.

    Is there any type of Feedback framework or API for Metro apps in the platform?
    Are there guidelines specific to gathering User Feedback from within our apps?

    This seems like something that lends itself well to a common implementation and such an implementation would likely make for a much better user experience.
    In turn a consistent user experience in apps for feedback would also likely lead to increased feedback from users which seems like a really helpful thing.

    So in summary, if such a resource exists please point me in the right direction, if it does not then please add it to the wish list for consideration in VNext of the platform.

    Thanks.

    Wednesday, June 20, 2012 5:16 AM

Answers

  • @D Lamb,

    Well in this sort of situation I'd tend to keep things pretty simple.  Basically what I've done with error reporting is to call my website with a subject and message and then that gets sent by e-mail to me directly.  This had a more complex things you could do you could store it in a database, but I think with something like feedback it really depends on how many users you are going to get sending you feedback. 

    No, there's nothing in the platform, because it really is dependent on what your backend is requiring.  The code that I use is pretty simple, like this:

    Dictionary<string, object> parameters = new Dictionary<string, object>
                                                {
                                                    {"s",Uri.EscapeDataString(pendingError.Subject.Replace("\r\n", ""))},
                                                    {"em",  Uri.EscapeDataString(Convert.ToBase64String(pendingError.Message))}
                                                };
    PostClient proxy = new PostClient(parameters);
    try
    {
        var result =
            await
            proxy.DownloadStringTaskAsync(
                new Uri(
                    string.Format("http://website/folder/{0}/",
                                    Uri.EscapeUriString(pendingError.From)), UriKind.Absolute));
    ...Stefan
    • Marked as answer by D Lamb Friday, June 22, 2012 1:04 AM
    Friday, June 22, 2012 12:11 AM

All replies

  • A Rate and Review link is automatically added to the Settings Pane for apps downloaded from the store. The app doesn't need to do anything for this.

    --Rob

    Wednesday, June 20, 2012 5:59 AM
    Moderator
  • Thanks Rob but not what I was asking.

    The Feedback button I am referring to is the one that appears on the AppBar for apps like Photos, Calendar and others.
    This Feedback mechanism is different from the store one in that the idea is to create a direct and less public feedback channel between the user and the developer of the app, where as the intent of the Review seems to be more of a channel for users to share feedback with other users and the world at large.

    I think both forms are of value, but my question is about the direct form that appears on the AppBar not the one on the SettingsPane.

    Wednesday, June 20, 2012 2:02 PM
  • @D Lamb,

    I agree, would be nice to have something like that built in, but at this stage you'll have to build it yourself.  Shouldn't take very long.

    ...Stefan

    Wednesday, June 20, 2012 9:21 PM
  • Hi StefanOlson,

    The UI would be pretty straightforward... what different delivery mechanisms and backend support would you suggest?

    I understand there are a number of things related to developer's app store accounts, metrics etc... is there any related to that infrastructure or built into the platform that would make delivery less of a science project and still not require the user to use their identity or email account so that it could be relatively anonymous feedback?

    Thanks.

    Friday, June 22, 2012 12:05 AM
  • @D Lamb,

    Well in this sort of situation I'd tend to keep things pretty simple.  Basically what I've done with error reporting is to call my website with a subject and message and then that gets sent by e-mail to me directly.  This had a more complex things you could do you could store it in a database, but I think with something like feedback it really depends on how many users you are going to get sending you feedback. 

    No, there's nothing in the platform, because it really is dependent on what your backend is requiring.  The code that I use is pretty simple, like this:

    Dictionary<string, object> parameters = new Dictionary<string, object>
                                                {
                                                    {"s",Uri.EscapeDataString(pendingError.Subject.Replace("\r\n", ""))},
                                                    {"em",  Uri.EscapeDataString(Convert.ToBase64String(pendingError.Message))}
                                                };
    PostClient proxy = new PostClient(parameters);
    try
    {
        var result =
            await
            proxy.DownloadStringTaskAsync(
                new Uri(
                    string.Format("http://website/folder/{0}/",
                                    Uri.EscapeUriString(pendingError.From)), UriKind.Absolute));
    ...Stefan
    • Marked as answer by D Lamb Friday, June 22, 2012 1:04 AM
    Friday, June 22, 2012 12:11 AM
  • @StefanOlson,

    Interesting approach.

    So I gather you have an aspx page at the other end of that URI that you are sending to that talks to your mail server to pass on the string and then creates and sends you the email? Do I understand this correctly? I have not used the DonwloadStringTaskAsync method call for anything yet.

    I agree, simple for something like this is definitely better and I like the idea of avoiding all the issues of setting up a full blown web service if I can avoid going down that path.

    Friday, June 22, 2012 12:31 AM
  • I'm using MVC, so the code is something like this:

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Index(string application, string subject, string message)
    {
        AdminToolsController.SendMessageToAdmin(application + ":" + subject, message,
                                                    "emailaddress", "name");
        ContentResult result = new ContentResult() { Content = "error sent" };
        return result;
    }

    The PostClient is something I have created based on some code I found somewhere which does HTTP Post.

    I am also zipping the content I'm sending (code not shown) to reduce data usage, which is particularly important on the phone where I developed this for.

    MVC really does make things much easier than plain old WebForms.

    ...Stefan

    Friday, June 22, 2012 12:55 AM