找回密码
 立即注册
查看: 263|回复: 0

在合适的时机弹出在AppStore中评分的窗口

[复制链接]
发表于 2022-6-13 13:36 | 显示全部楼层 |阅读模式
思路

定义一个IosRequestStoreReviewSys类:在想要弹出的时机,进行条件判断,若满足条件则弹出窗口。
外部在游戏开始时,主动调用其静态方法Init即可。
代码

using System.Collections;using System.Collections.Generic;using UnityEngine;// 在合适(指检查条件是否满足、且检查后条件满足)的时机,弹出去苹果商店评价的窗口// 在游戏初始化时调用:IosRequestStoreReviewSys.Init();public class IosRequestStoreReviewSys{    public static IosRequestStoreReviewSys Instance { get; private set; }    private const string HasRequestedStorageKey = "IosRequestStoreReviewSys" + "HasRequested";    // 到达合适的    private float _initiateRequestDelayTime = 1f;    private Condition _condition;    public static void Init()    {        if (!HasRequested())        {            Instance = new IosRequestStoreReviewSys();        }        bool HasRequested()        {            return PlayerPrefs.GetInt(HasRequestedStorageKey, 0) != 0;        }    }    private IosRequestStoreReviewSys()    {        _condition = new Condition();    }    private void Destroy()    {        _condition?.Destroy();        _condition = null;        Instance = null;    }    private void 在想要弹出窗口的时机调用,若满足条件,则弹出窗口()    {        TryInitiateRequest();    }    private void TryInitiateRequest()    {        MonoSys.Instance.DelayCall(_initiateRequestDelayTime, InitiateRequest, true);        bool CanInitiateRequest()        {            return _condition.IsSatisfy();        }        void Complete()        {            PlayerPrefs.SetInt(HasRequestedStorageKey, 1);        }        void InitiateRequest()        {            if (CanInitiateRequest())            {#if UNITY_IOS                if(Application.platform == RuntimePlatform.IPhonePlayer)                {                    UnityEngine.iOS.Device.RequestStoreReview();                }#endif                // Debug.Log("!!弹出:去苹果商店评价的窗口。");                Complete();                Destroy();            }        }    }    // 条件:自己记录一些数据。在外部调用IsSatisfy时,判断条件是否满足。    private class Condition    {        public Condition()        {        }        public void Destroy()        {        }        // 外部调用,在此处判断条件是否满足        public bool IsSatisfy()        {            return true;        }    }}
Unity中,不继承MonoBehaviour的类使用Mono的相关功能
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 02:26 , Processed in 0.088024 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表