アプリ内レビューを設定し、そのレビューを一定回数で表示させ、表示のタイミングを設定しようとした際に下記のコードを書いたのですが、このコードでは、表示のタイミングは設定が反映されるのですが、毎回そのSceneに移行した際にアプリレビューが表示されてしまいます。
こちら3回シーンを開いたら1回表示をさせてinvokeのメソッドも反映をさせたいのですが、どうしても毎回表示がされてしまいます。
こちら解決方法をご存知の方はご教示いただけますと幸いです。
C#
1//一部抜粋 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.UI; 6using UnityEngine.SceneManagement; 7#if UNITY_IOS 8using UnityEngine.iOS; 9#endif 10 11void Start() 12{StartCoroutine("ShowReviewText"); 13 14} 15 16private IEnumerator ShowReviewText() 17 18 { 19 for (int i = 0; i < 10; i++) 20 { 21 yield return null; 22 if (i % 3 == 0) 23 { 24 Invoke("ShowReview", 1); 25 26 } 27 28 } 29 30 31 } 32 33public void ShowReview() 34 { 35 #if UNITY_IOS 36 if (Device.RequestStoreReview()) 37 { 38 39 } 40 41 //Androidやそれ以外の場合の処理 42 #else 43 44 #endif 45 }
追記
上記の方法以外にも下記のコードで試したのですが、こちらですと画面がフリーズしてしまいます。
void Start内でメソッドを実装すると連続で処理が行われてしまうため、Update内にStartCoroutine(ShowReviewText(10, 1.0f));を追加し、invokeではなく、
yield return new WaitForSeconds(interval);での表示タイミングをずらすことを試みました。
C#
1//一部抜粋 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7using UnityEngine.SceneManagement; 8#if UNITY_IOS 9using UnityEngine.iOS; 10#endif 11 12void Update() 13 { 14 StartCoroutine(ShowReviewText(10, 1.0f)); 15 } 16private IEnumerator ShowReviewText(int num, float interval) 17 18 { 19 for (int i = 0; i < num; i++) 20 { 21 yield return null; 22 23 if (i % 3 == 0) 24 { 25 yield return new WaitForSeconds(interval); 26 27 ShowReview(); 28 29 30 } 31 32 } 33 34 35 } 36 37 public void ShowReview() 38 { 39 #if UNITY_IOS 40 if (Device.RequestStoreReview()) 41 { 42 //レビュー出た 43 } 44 45 //Androidやそれ以外の場合の処理 46 #else 47 48 #endif 49 }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/23 09:16