示例#1
0
        /// <summary>
        /// 获取当前活动
        /// </summary>
        /// <param name="tryTimes"></param>
        /// <returns></returns>
        private async Task GetCurrentActivities(int tryTimes = 2)
        {
            if (LastGetActivityTime > DateTime.Now.AddMinutes(-5))  //三分钟以内不重复获取
            {
                return;
            }

            var advertisementResult = await OfoApi.GetAdvertisementsAsync(await PositionUtility.GetUnFixBasicPositionAsync());

            if (await CheckOfoApiResult(advertisementResult))
            {
                LastGetActivityTime = DateTime.Now;
                //缓存起始屏幕splash
                var cacheSplashTask = Task.Run(async() =>
                {
                    try
                    {
                        if (advertisementResult?.Data?.splash?.Count > 0)
                        {
                            var splashInfo = advertisementResult.Data.splash[0];

                            if (!splashInfo.ImgName.Equals(Global.AppConfig.LastCacheSplashFileName))  //缓存的不是当前Splash
                            {
                                if (await LocalCacheUtility.CacheHttpFileAsync(splashInfo.ImgName, splashInfo.ImgUrl))
                                {
                                    Global.AppConfig.LastCacheSplashFileName = splashInfo.ImgName;
                                    Global.AppConfig.CacheSplashExpire       = VariousUtility.TimeStampToDateTime(splashInfo.expire * 10000L);
                                    Global.SaveAppConfig();
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex);
                    }
                });

                var activity = advertisementResult.Data.activity?.Count > 0 ? advertisementResult.Data.activity[0] : null;

                if (activity != null)
                {
                    if (Global.AppConfig.LastShowActivityId == activity.id && Global.AppConfig.LastShowActivityTime > DateTime.Now.AddHours(-3))    //今天已经显示过当前活动,则不再显示
                    {
                        return;
                    }
                    else    //显示活动
                    {
                        ActivityPopupContentView activityPopupContentView = new ActivityPopupContentView();

                        ActivityPopupContentViewModel popupContentViewModel = new ActivityPopupContentViewModel()
                        {
                            Activity = activity,
                        };

                        await ShowContentNotifyAsync(activityPopupContentView, popupContentViewModel);
                    }
                }
            }
            else
            {
                if (tryTimes-- > 0)
                {
                    await GetCurrentActivities(tryTimes);
                }
            }
        }