Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

New In-App update for unity and completely free!

Discussion in 'Assets and Asset Store' started by Clevereen, Apr 7, 2021.

  1. Clevereen

    Clevereen

    Joined:
    Apr 22, 2018
    Posts:
    8
    Hello I made this tutorial to allow you to make an in-app Update for your Android games in Unity!

    This allows you to use the google play core library and it will check if there is an update available for the player, and in this case, force him to download the last version of your game!



    Hope you will enjoy it :)

    Clevereen.
     
  2. leonardoduarteuerj

    leonardoduarteuerj

    Joined:
    Aug 10, 2020
    Posts:
    10
    Hi Teacher, thanks for the video!
    For me, doesn't work. Can you help me? Error:

    NullReferenceException: Object reference not set to an instance of an object
    GoogleUpdate+<CheckForUpdate>d__3.MoveNext () (at Assets/mygame/C#-Assets/Scripts-C#/GoogleUpdate.cs:24)

    IEnumerator CheckForUpdate()
    {
    PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation = appUpdateManager.GetAppUpdateInfo(); <---------- this is a line 24 with error

    // Wait until the asynchronous operation completes.
    yield return appUpdateInfoOperation;

    if (appUpdateInfoOperation.IsSuccessful)
    {
    var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
    // Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
    // IsUpdateTypeAllowed(), etc. and decide whether to ask the user
    // to start an in-app update.

    //display if there us an update or not
    if (appUpdateInfoResult.UpdateAvailability == UpdateAvailability.UpdateAvailable)
    {
    inAppStatus.text = UpdateAvailability.UpdateAvailable.ToString();
    }
    else
    {
    inAppStatus.text ="No Update Avaiable";
    }

    // Creates an AppUpdateOptions defining an immediate in-app
    // update flow and its parameters.
    var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();

    StartCoroutine(StartImmediateUpdate(appUpdateInfoResult, appUpdateOptions));

    }

    }
     
  3. leonardoduarteuerj

    leonardoduarteuerj

    Joined:
    Aug 10, 2020
    Posts:
    10
    The complete script:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using Google.Play.Common;
    using Google.Play.AppUpdate;

    public class GoogleUpdate : MonoBehaviour
    {
    [SerializeField] private Text inAppStatus;

    AppUpdateManager appUpdateManager = new AppUpdateManager();

    // Start is called before the first frame update
    void Start()
    {
    StartCoroutine(CheckForUpdate());
    }



    IEnumerator CheckForUpdate()
    {
    PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation = appUpdateManager.GetAppUpdateInfo(); <-- error here

    // Wait until the asynchronous operation completes.
    yield return appUpdateInfoOperation;

    if (appUpdateInfoOperation.IsSuccessful)
    {
    var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
    // Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
    // IsUpdateTypeAllowed(), etc. and decide whether to ask the user
    // to start an in-app update.

    //display if there us an update or not
    if (appUpdateInfoResult.UpdateAvailability == UpdateAvailability.UpdateAvailable)
    {
    inAppStatus.text = UpdateAvailability.UpdateAvailable.ToString();
    }
    else
    {
    inAppStatus.text ="No Update Avaiable";
    }

    // Creates an AppUpdateOptions defining an immediate in-app
    // update flow and its parameters.
    var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();

    StartCoroutine(StartImmediateUpdate(appUpdateInfoResult, appUpdateOptions));

    }

    }


    IEnumerator StartImmediateUpdate(AppUpdateInfo appUpdateInfoOp_i, AppUpdateOptions appUpdateOptions_i)
    {
    // Creates an AppUpdateRequest that can be used to monitor the
    // requested in-app update flow.
    var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoOp_i,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions_i);
    yield return startUpdateRequest;

    // If the update completes successfully, then the app restarts and this line
    // is never reached. If this line is reached, then handle the failure (for
    // example, by logging result.Error or by displaying a message to the user).
    }



    /* IEnumerator StartFlexibleUpdate()
    {
    // Creates an AppUpdateRequest that can be used to monitor the
    // requested in-app update flow.
    var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoResult,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions);

    while (!startUpdateRequest.IsDone)
    {
    // For flexible flow,the user can continue to use the app while
    // the update downloads in the background. You can implement a
    // progress bar showing the download status during this time.
    yield return null;
    }

    } */










    }
     
  4. unity_5A1A6EFBB4464B051013

    unity_5A1A6EFBB4464B051013

    Joined:
    May 8, 2021
    Posts:
    3
    Did you found bug ? I have same issues... and my game crashed..
     
  5. waqargamerz

    waqargamerz

    Joined:
    Mar 11, 2021
    Posts:
    2
    Check if you Google Play Installed on your device
     
  6. waqargamerz

    waqargamerz

    Joined:
    Mar 11, 2021
    Posts:
    2
    I followed the same tutorial, but still pop up not showing and there is no error or crash in my game!

    i tried in internal testing and live testing as well. but issue is same pop up not appeared
     
  7. Clevereen

    Clevereen

    Joined:
    Apr 22, 2018
    Posts:
    8
    Hello @waqamers and @leonardoduarteuerj
    Sorry for the late reply, I had no notification about it. I Seems that many off you have this issue, it might include myself. I'll run another test on one of my game and try to understand where is that coming from!
     
  8. paperboatlabs

    paperboatlabs

    Joined:
    Dec 5, 2019
    Posts:
    1
    Can any one fixed this problem ?
     
  9. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    It never worked. There is another method and actually i did not understand his script because it's not make a push update to your apk so that why it won't work. You can actually read official page that have completely different example.
     
  10. IvayloDev

    IvayloDev

    Joined:
    Apr 20, 2015
    Posts:
    23
    For anyone getting a crash from this script, replace the

    private AppUpdateManager appUpdateManager = new AppUpdateManager();

    with

    private AppUpdateManager appUpdateManager;

    This fixed it for me
     
  11. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89

    Hi. Can you please show your full script with this change. Because it's not work for me at all.
     
  12. IvayloDev

    IvayloDev

    Joined:
    Apr 20, 2015
    Posts:
    23
    #if UNITY_ANDROID
    using System.Collections;
    using System.Collections.Generic;
    using Google.Play.AppUpdate;
    using Google.Play.Common;
    using UnityEngine;

    public class InAppUpdateManager : MonoBehaviour
    {
    private AppUpdateManager appUpdateManager;

    private static bool checkForUpdate = false;

    void Start()
    {
    #if !UNITY_EDITOR
    StartCoroutine(CheckForUpdates());
    #endif
    }

    IEnumerator CheckForUpdates()
    {
    yield return new WaitForSeconds(5f);


    //Only execute once in while app lifecycle
    if (checkForUpdate)
    yield return null;

    checkForUpdate = true;


    //Check for an update
    PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
    appUpdateManager.GetAppUpdateInfo();


    // Wait until the asynchronous operation completes.
    yield return appUpdateInfoOperation;


    if (appUpdateInfoOperation.IsSuccessful)
    {
    AppUpdateInfo appUpdateInfoResult = appUpdateInfoOperation.GetResult();

    this should fix the crash, however I am now getting an error on the line "appUpdateManager.GetAppUpdateInfo(); Will be working on finding a solution and will update if I have any progress.
     
    mahito2932 likes this.
  13. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    Thank you very much.
    Btw i have no errors in this script try to check out maybe if some of your scripts have conflicts around.
    Or maybe this error is caused by #if UNITY_ANDROID you missed to write #endif at the end of line and you missed 2 } }
     
    Last edited: Jan 26, 2022
  14. markgamecompany

    markgamecompany

    Joined:
    May 14, 2021
    Posts:
    1
    Exception: Field currentActivity or type signature not found
    UnityEngine._AndroidJNIHelper.GetFieldID (System.IntPtr jclass, System.String fieldName, System.String signature, System.Boolean isStatic) (at <ddc1aa93e501439198dbc653ad0ff590>:0)

    i have this error can anybody help
     
  15. Hackdamm

    Hackdamm

    Joined:
    May 4, 2019
    Posts:
    1
    I dont understand how does "private AppUpdateManager appUpdateManager;" ever get assigned an Instance of AppUpdateManager if i dont assign it like this "private AppUpdateManager appUpdateManager = new AppUpdateManager"
     
  16. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    In fact it wrong. Your second line is right.
    But this method is still not work to me absolutely no response. It's actually don't give me any kind of error but just refuse to work.
     
  17. flying_volcano_studio

    flying_volcano_studio

    Joined:
    Mar 15, 2022
    Posts:
    7
    Hav you got any solution for this? i am facing the same issue.
     
  18. zxdill

    zxdill

    Joined:
    Jul 8, 2018
    Posts:
    3
    Seems this still has issues, I tried to put a wrapper on everything and it is still crashing on load, I think it instantiating the the class from google is crashing it but not sure. Still looking for solution.
     
  19. ldygs001

    ldygs001

    Joined:
    Jul 5, 2019
    Posts:
    4
    I am facing the same problem. I noticed there is a step called "Check update priority", the default priority value is 0, which will neither call a flexible update nor an immediate update. Maybe this is the key point, but I'm not sure.
     
  20. ldygs001

    ldygs001

    Joined:
    Jul 5, 2019
    Posts:
    4
    Yes! that is the point. I tried to set the priority value to "5" with Google Cloud API, then, I can see the update popup and update my app.
    If you are a beginner like me, the Google Cloud API is not hard to learn. You can use a software named PostMan and GC API to change the update priority value.
     
  21. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    Hi. Can you please write here your scripts if it works for you. It will help a lot to anyone.
     
  22. ldygs001

    ldygs001

    Joined:
    Jul 5, 2019
    Posts:
    4
    Steps:
    1, You need to link the Postman to your Google Cloud Project, just like this link :
    https://www.vulongtran.com/how-to-use-postman-with-google-cloud-platform-apis

    2, In Postman, you can change some settings of your app with Goole Cloud API, for example, the "Priority". You may need these sentences to do this:

    • Upload your package to Google Play Console, just SAVE IT, DO NOT submit it.
    • Get an edit ID, remember it, you will use it in the following steps(change "PackageName" and "editID" with yours)
    Post
    https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{package name}/edits

    • Input this JSON in the "Body"
    {
    “releases” : [{
    “versionCodes” : [ “your version num” ],
    “inAppUpdatePriority” : 5 ,
    “status” : “completed”
    }]
    }
    • Now, save these values to your app by:
    Put
    https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{PackageName}/edits/editID/tracks/internal

    • Now, you have already changed the priority value, but in the end, you need to submit all your changes with this sentence (change "PackageName" and "editID" with yours):

    https://androidpublisher.googleapis...applications/PackageNamel/edits/editID:commit

    Good Luck
     
  23. ldygs001

    ldygs001

    Joined:
    Jul 5, 2019
    Posts:
    4
    Oh, I forgot an important step. When you complete all of this, you can submit your app in Google Play Console. Remember this, otherwise, you can not change anything value of your app.
     
  24. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    Big thanks to you this helped a lot and for your time and effort.
     
  25. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    Can i ask you a question where did you get EDIT ID?
     
  26. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    I fixed the script and now everything works.
    If this can be helpful to anyone, I list my steps:

    This is the code that i remade from tutorial some parts are not essentials.

    Code (CSharp):
    1. using Google.Play.AppUpdate;
    2. using Google.Play.Common;
    3. using System.Collections;
    4. using UnityEngine;
    5.  
    6. public class UpdateGame : MonoBehaviour
    7. {
    8.     private AppUpdateManager appUpdateManager;
    9.  
    10.     private void Awake()
    11.     {
    12.         if (Application.platform == RuntimePlatform.Android)
    13.         {
    14.             this.appUpdateManager = new AppUpdateManager();
    15.         }
    16.     }
    17.  
    18.  
    19.     private void Start()
    20.     {
    21.         StartCoroutine(CheckForUpdate());
    22.     }
    23.  
    24.     IEnumerator CheckForUpdate()
    25.     {
    26.         PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
    27.           appUpdateManager.GetAppUpdateInfo();
    28.  
    29.         yield return appUpdateInfoOperation;
    30.  
    31.  
    32.         if(appUpdateInfoOperation.Error == AppUpdateErrorCode.ErrorUnknown)
    33.         {
    34.             print("there is some errors");
    35.         }
    36.        
    37.  
    38.         if (appUpdateInfoOperation.IsSuccessful)
    39.         {
    40.             var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
    41.  
    42.             if (appUpdateInfoResult.UpdateAvailability == UpdateAvailability.UpdateAvailable && appUpdateInfoResult.IsUpdateTypeAllowed(AppUpdateOptions.ImmediateAppUpdateOptions()))
    43.             {
    44.                 var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();
    45.                 StartCoroutine(StartImmediateUpdate(appUpdateInfoResult, appUpdateOptions));
    46.             }
    47.         }
    48.         else
    49.         {
    50.             print("there is no update for now");
    51.         }
    52.     }
    53.  
    54.     IEnumerator StartImmediateUpdate(AppUpdateInfo appUpdateInfo_i, AppUpdateOptions appUpdateOptions_i)
    55.     {
    56.         var startUpdateRequest = appUpdateManager.StartUpdate(appUpdateInfo_i, appUpdateOptions_i);
    57.         yield return startUpdateRequest;
    58.     }
    59. }
    After this you need tick ProGuard files and add this following code:

    Code (CSharp):
    1. -keep class com.google.android.play.core.appupdate.AppUpdateInfo {
    2.     public java.lang.String packageName();
    3.     public int availableVersionCode();
    4.     public int updateAvailability();
    5.     public int installStatus();
    6.     public boolean isUpdateTypeAllowed(com.google.android.play.core.appupdate.AppUpdateOptions);
    7.     public boolean isUpdateTypeAllowed(int);
    8.     public int updatePriority();
    9.     public long bytesDownloaded();
    10.     public long totalBytesToDownload();
    11.     public java.lang.Integer clientVersionStalenessDays();
    12. }
    13.  
    14. -keep class com.google.android.play.core.appupdate.AppUpdateManager {
    15.     public abstract void registerListener(com.google.android.play.core.install.InstallStateUpdatedListener);
    16.     public abstract void unregisterListener(com.google.android.play.core.install.InstallStateUpdatedListener);
    17.  
    18.     public abstract com.google.android.play.core.tasks.Task completeUpdate();
    19.     public abstract com.google.android.play.core.tasks.Task getAppUpdateInfo();
    20.     public com.google.android.play.core.tasks.Task startUpdateFlow(com.google.android.play.core.appupdate.AppUpdateInfo, android.app.Activity, com.google.android.play.core.appupdate.AppUpdateOptions);
    21.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, int, android.app.Activity, int);
    22.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, int, com.google.android.play.core.common.IntentSenderForResultStarter, int);
    23.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, android.app.Activity, com.google.android.play.core.appupdate.AppUpdateOptions, int);
    24.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, com.google.android.play.core.common.IntentSenderForResultStarter, com.google.android.play.core.appupdate.AppUpdateOptions, int);
    25. }
    26.  
    27. -keep class com.google.android.play.core.appupdate.AppUpdateManagerFactory {
    28.     <init>();
    29.  
    30.     public static com.google.android.play.core.appupdate.AppUpdateManager create(android.content.Context);
    31. }
    32.  
    33. -keep class com.google.android.play.core.appupdate.AppUpdateOptions {
    34.     public abstract boolean allowAssetPackDeletion();
    35.     public abstract int appUpdateType();
    36.     public static com.google.android.play.core.appupdate.AppUpdateOptions$Builder newBuilder(int);
    37.     public static com.google.android.play.core.appupdate.AppUpdateOptions defaultOptions(int);
    38. }
    39.  
    40. -keep class com.google.android.play.core.appupdate.AppUpdateOptions$Builder {
    41.     public abstract com.google.android.play.core.appupdate.AppUpdateOptions$Builder setAllowAssetPackDeletion(boolean);
    42.     public abstract com.google.android.play.core.appupdate.AppUpdateOptions$Builder setAppUpdateType(int);
    43.     public abstract com.google.android.play.core.appupdate.AppUpdateOptions build();
    44. }
    45.  
    46. -keep class com.google.android.play.core.appupdate.testing.FakeAppUpdateManager {
    47.     public <init>(android.content.Context);
    48.  
    49.     public void registerListener(com.google.android.play.core.install.InstallStateUpdatedListener);
    50.     public void unregisterListener(com.google.android.play.core.install.InstallStateUpdatedListener);
    51.  
    52.     public com.google.android.play.core.tasks.Task completeUpdate();
    53.     public com.google.android.play.core.tasks.Task getAppUpdateInfo();
    54.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, int, android.app.Activity, int);
    55.     public boolean startUpdateFlowForResult(com.google.android.play.core.appupdate.AppUpdateInfo, int, com.google.android.play.core.common.IntentSenderForResultStarter, int);
    56.  
    57.     public void setUpdateAvailable(int);
    58.     public void setUpdateAvailable(int, int);
    59.     public void setUpdateNotAvailable();
    60.     public void setInstallErrorCode(int);
    61.  
    62.     public void userAcceptsUpdate();
    63.     public void userRejectsUpdate();
    64.  
    65.     public void downloadStarts();
    66.     public void downloadCompletes();
    67.     public void userCancelsDownload();
    68.     public void downloadFails();
    69.  
    70.     public void installCompletes();
    71.     public void installFails();
    72.  
    73.     public boolean isConfirmationDialogVisible();
    74.     public boolean isImmediateFlowVisible();
    75.     public boolean isInstallSplashScreenVisible();
    76.     public java.lang.Integer getTypeForUpdateInProgress();
    77.  
    78.     public void setClientVersionStalenessDays(java.lang.Integer);
    79.     public void setTotalBytesToDownload(long);
    80.     public void setBytesDownloaded(long);
    81.     public void setUpdatePriority(int);
    82. }
    83.  
    84. -keep class com.google.android.play.core.install.InstallException {
    85.     public int getErrorCode();
    86. }
    87.  
    88. -keep class com.google.android.play.core.install.InstallState {
    89.     public int installErrorCode();
    90.     public int installStatus();
    91.     public java.lang.String packageName();
    92.     public long bytesDownloaded();
    93.     public long totalBytesToDownload();
    94. }
    95.  
    96. -keep class com.google.android.play.core.install.InstallStateUpdatedListener {
    97.    <init>();
    98.  
    99.    public void onStateUpdate(com.google.android.play.core.install.InstallState);
    100. }
    101.  
    102. -keep class com.google.android.play.core.install.NativeInstallStateUpdateListener {
    103.     <init>();
    104.  
    105.     public void onStateUpdate(com.google.android.play.core.install.InstallState);
    106. }
    107.  
    108. -keep class com.google.android.play.core.install.model.ActivityResult {
    109.     public static int RESULT_IN_APP_UPDATE_FAILED;
    110. }
    111.  
    112. -keep class com.google.android.play.core.install.model.AppUpdateType {
    113.     public static int FLEXIBLE;
    114.     public static int IMMEDIATE;
    115. }
    116.  
    117. -keep class com.google.android.play.core.install.model.InstallErrorCode {
    118.     public static int NO_ERROR;
    119.     public static int NO_ERROR_PARTIALLY_ALLOWED;
    120.     public static int ERROR_API_NOT_AVAILABLE;
    121.     public static int ERROR_APP_NOT_OWNED;
    122.     public static int ERROR_DOWNLOAD_NOT_PRESENT;
    123.     public static int ERROR_INSTALL_NOT_ALLOWED;
    124.     public static int ERROR_INSTALL_UNAVAILABLE;
    125.     public static int ERROR_INTERNAL_ERROR;
    126.     public static int ERROR_INVALID_REQUEST;
    127.     public static int ERROR_PLAY_STORE_NOT_FOUND;
    128.     public static int ERROR_UNKNOWN;
    129. }
    130.  
    131. -keep class com.google.android.play.core.install.model.InstallStatus {
    132.     public static int CANCELED;
    133.     public static int DOWNLOADED;
    134.     public static int DOWNLOADING;
    135.     public static int FAILED;
    136.     public static int INSTALLED;
    137.     public static int INSTALLING;
    138.     public static int PENDING;
    139.     public static int REQUIRES_UI_INTENT;
    140.     public static int UNKNOWN;
    141. }
    142.  
    143. -keep class com.google.android.play.core.install.model.UpdateAvailability {
    144.     public static int UNKNOWN;
    145.     public static int UPDATE_AVAILABLE;
    146.     public static int UPDATE_NOT_AVAILABLE;
    147.     public static int DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS;
    148. }
    after this you can add your script to preload assets but it's not essentials if this may not work try. But it should work.

    P.S. You need to import ALL google plugins ver. 1.7.0
     
  27. zxdill

    zxdill

    Joined:
    Jul 8, 2018
    Posts:
    3
    @mahito2932
    You got mine to stop crashing on start. But I still can't get it to update the game. When you say ""all google plugins ver 170" is that minimum or you have to roll back to that version. All mine are the newest versions.
     
  28. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    The newest version is not working for me too. It seems they changed something. So yeah you need to use 1.7.0 I think other version should not work. After that you need to upload newer version to google play console and change bundle number but you need to do this twice since that was a new update for your app. I literally spent a lot of time to test this out and it seems that 1.7.0 Is more stable.
     
  29. zxdill

    zxdill

    Joined:
    Jul 8, 2018
    Posts:
    3
    @mahito2932 I rolled back to that and tried it, couldn't get it to work. I also bought a unity asset that does the auto update and I could not get it to work. That asset also uses the version 1.7.0. Is there anything that are "simple settings" that may be obvious that should be on but I may have off? The developer who made the asset was kind enough to try and diagnose the problem. It seems that one of the libraries is not loading but I don't really know how to check or find the libraries to make sure they are communicating in my app. If you have any insight into this I would love to hear it. I would image the library that is not communicating is one of the google libraries. I did delete out all my google files and try loading them fresh. I was told I should roll back to a previous version before I had any of the google packages but I imported them a long time ago and left this on the back burner till now.
     
  30. mahito2932

    mahito2932

    Joined:
    Nov 15, 2020
    Posts:
    89
    Yes as I said in my previous post if it does not work you need to put your script in preloaded assets you just only need the script where you write this code which is triggering update and be sure that your stripping code is set to Low. In my case I'm using unity 2021 so i set to minimal. So after that try and see.
    And be sure you added everything correctly into proguard file