有一个名为Web App Template(又名WAT - http://wat.codeplex.com/)的项目,它允许您将Web应用程序包装为Windows 8 / Windows Phone 8应用程序。我已经对应用程序执行了此操作,现在我正在尝试添加"评价我的应用程序"它的特色。我不知道在哪里/是否可以为要添加的组件注入代码。
我在这里关注指南:http://developer.nokia.com/community/wiki/Implement_%22Rate_My_App%22_in_under_60_seconds
我坚持第5步 - 在哪里添加事件处理程序?没有MainPage.xaml.cs,我也没有看到任何类似的文件。
我想WAT正在调用另一个库来加载Web浏览器。有什么方法可以将事件处理程序和方法注入此库中吗?
答案 0 :(得分:1)
我建议不要提示用户对我的应用进行评分'在应用程序的第一次打开时,应该给用户一些时间来查看应用程序的外观以及它的功能。因此,保持应用程序启动次数并要求在应用程序的第5-10次发布后对应用程序进行评级将更有意义。此外,您应该检查是否已经提示用户为您的应用评分,如果是,请不要再次提示。 (否则你会用“评价我的应用程序'评分”来惹恼他们
为了实现这一目标,您应该首先在应用设置类中保持应用启动计数。
用于存储任何类型设置的界面:
public interface ISettingService
{
void Save();
void Save(string key, object value);
bool AddOrUpdateValue(string Key, object value);
bool IsExist(string key);
T Load<T>(string key);
T GetValueOrDefault<T>(string Key, T defaultValue);
}
使用上述界面存储此类计数和设置的评级服务类:
public class RatingService
{
private const string IsAppRatedKeyName = "isApprated";
private const string TabViewCountKeyName = "tabViewCount";
private const bool IsAppratedDefault = false;
private const int TabViewCountDefault = 0;
private const int ShowRatingInEveryN = 7;
private readonly ISettingService _settingService;
[Dependency]
public RatingService(ISettingService settingService)
{
_settingService = settingService;
}
public void RateApp()
{
if (_settingService.AddOrUpdateValue(IsAppRatedKeyName, true))
_settingService.Save();
}
public bool IsNeedShowMessage()
{
return (_settingService.GetValueOrDefault(TabViewCountKeyName, TabViewCountDefault)%ShowRatingInEveryN) == 0;
}
public void IncreaseTabViewCount()
{
int tabCount = _settingService.GetValueOrDefault(TabViewCountKeyName, TabViewCountDefault);
if (_settingService.AddOrUpdateValue(TabViewCountKeyName, (tabCount + 1)))
_settingService.Save();
}
public bool IsAppRated()
{
return _settingService.GetValueOrDefault(IsAppRatedKeyName, IsAppratedDefault);
}
}
这是您运行此类功能的方法,并提示用户对项目中的任何位置(主页或用户启动某些功能的其他页面)评估应用程序(如果以前未评级):
private void RunRating()
{
if (!RatingService.IsAppRated() && RatingService.IsNeedShowMessage())
{
MessageBoxResult result = MessageBox.Show("Review the app?", "Would you like to review this awesome app?",
MessageBoxButton.OKCancel);
//show message.
if (result == MessageBoxResult.OK)
{
RatingService.RateApp();
new MarketplaceReviewTask().Show();
}
}
}