private static void ImportAllPackages() { // Check to see if we should run the external package importer. This will be reset when Ads is upgraded. bool ShouldRunPackageImporter = false; PackageImporterStatus packageImporterStatus = new PackageImporterStatus(); string packageImporterStatusPath = Application.dataPath + "/" + k_PackageImporterStatus; // If there is no JSON file, create one. Otherwise, fetch values from the file. if (!File.Exists(packageImporterStatusPath)) { ShouldRunPackageImporter = true; } else { string jsonString = File.ReadAllText(packageImporterStatusPath); packageImporterStatus = JsonUtility.FromJson <PackageImporterStatus>(jsonString); if (packageImporterStatus != null) { ShouldRunPackageImporter = packageImporterStatus.shouldRunPackageImporter; } } if (ShouldRunPackageImporter) { bool DoNotAskAgainIAP = false; // Fetch the external package installation data ExternalPackageInstallationData externalPackageInstallationData = new ExternalPackageInstallationData(); string externalPackageInstallationDataPath = Application.dataPath + "/" + k_ExternalPackageInstallationData; // If there is no JSON file, create one. Otherwise, fetch values from the file. if (!File.Exists(externalPackageInstallationDataPath)) { DoNotAskAgainIAP = false; } else { string jsonString = File.ReadAllText(externalPackageInstallationDataPath); externalPackageInstallationData = JsonUtility.FromJson <ExternalPackageInstallationData>(jsonString); if (externalPackageInstallationData != null) { DoNotAskAgainIAP = externalPackageInstallationData.doNotAskAgainIAP; } } // If the user has not selected "Don't ask me again" for IAP, and doesn't have IAP installed, prompt them. if (!DoNotAskAgainIAP) { InstallIAPPackage(externalPackageInstallationData); } // -------- Install logic for other packages here! packageImporterStatus.shouldRunPackageImporter = false; // Write the updated values to our JSON files. string packageImporterStatusJsonString = JsonUtility.ToJson(packageImporterStatus); File.WriteAllText(packageImporterStatusPath, packageImporterStatusJsonString); WriteExternalPackageInstallationDataToDisk(externalPackageInstallationData); } }
private static void WriteExternalPackageInstallationDataToDisk(ExternalPackageInstallationData externalPackageInstallationData) { string externalPackageInstallationDataPath = Application.dataPath + "/" + k_ExternalPackageInstallationData; string externalPackageInstallationDataJsonString = JsonUtility.ToJson(externalPackageInstallationData); File.WriteAllText(externalPackageInstallationDataPath, externalPackageInstallationDataJsonString); }
private static void InstallIAPPackage(ExternalPackageInstallationData externalPackageInstallationData) { bool IsIAPInstalled = IsExternalPackageInstalled(s_IAPGuids); if (!IsIAPInstalled) { int option; if (RunningInBatchMode) { Debug.Log("Preparing to install the IAP asset package..."); option = 0; } else { option = EditorUtility.DisplayDialogComplex("Install Unity IAP", "Unity Ads works best with an In-App Purchasing solution." + System.Environment.NewLine + "Download and install Unity IAP (recommended)?" + System.Environment.NewLine + "You can always do this from the Services window later.", "Install Unity IAP", "Not now", "Don't ask me again"); } switch (option) { // Install Unity IAP case 0: { s_PackageImporter.DownloadAndImportPackage(k_IAPDownloadUrl, RunningInBatchMode); s_PackageImporter.DownloadPackageData(k_AssetStoreInfo + k_IAPAssetStoreId, (bool packageDataAvailable, string packagedata) => { if (packageDataAvailable) { externalPackageInstallationData.IAPInfo = packagedata; // Write to disk WriteExternalPackageInstallationDataToDisk(externalPackageInstallationData); } }); break; } // Not now case 1: { // No-op. break; } // Don't ask me again case 2: { externalPackageInstallationData.doNotAskAgainIAP = true; break; } default: { Debug.LogError("Unrecognized option!"); break; } } } }