Appboy.Editor.PostBuild.ModifyPlist C# (CSharp) Method

ModifyPlist() private static method

private static ModifyPlist ( string plistPath ) : void
plistPath string
return void
        private static void ModifyPlist(string plistPath)
        {
            // Create PlistDocument
              PlistDocument plist = new PlistDocument();
              plist.ReadFromString(File.ReadAllText(plistPath));
              PlistElementDict rootDict = plist.root;

              // Clear existing Appboy Unity dictionary
              if (rootDict["Appboy"] != null) {
            rootDict["Appboy"]["Unity"] = null;
              }

              // Add Appboy Unity keys to Plist
              if (AppboyConfig.IOSAutomatesIntegration) {
            // The Appboy Unity dictionary
            PlistElementDict appboyUnityDict = (rootDict["Appboy"] == null) ? rootDict.CreateDict("Appboy").CreateDict("Unity") : rootDict["Appboy"].AsDict().CreateDict("Unity");

            // Add iOS automated integration build keys to Plist
            if (ValidateField(ABKUnityApiKey, AppboyConfig.ApiKey, "Appboy will not be initialized.")) {
              appboyUnityDict.SetString(ABKUnityApiKey, AppboyConfig.ApiKey.Trim());
            }
            appboyUnityDict.SetBoolean(ABKUnityAutomaticPushIntegrationKey, AppboyConfig.IOSIntegratesPush);
            appboyUnityDict.SetBoolean(ABKUnityDisableAutomaticPushRegistrationKey, AppboyConfig.IOSDisableAutomaticPushRegistration);
            if (AppboyConfig.IOSPushIsBackgroundEnabled) {
              PlistElementArray backgroundModes = (rootDict["UIBackgroundModes"] == null) ? rootDict.CreateArray("UIBackgroundModes") : rootDict["UIBackgroundModes"].AsArray();
              backgroundModes.AddString("remote-notification");
            }

            // Set push listeners
            if (ValidateListenerFields(ABKUnityPushReceivedGameObjectKey, AppboyConfig.IOSPushReceivedGameObjectName,
              ABKUnityPushReceivedCallbackKey, AppboyConfig.IOSPushReceivedCallbackMethodName)) {
              appboyUnityDict.SetString(ABKUnityPushReceivedGameObjectKey, AppboyConfig.IOSPushReceivedGameObjectName.Trim());
              appboyUnityDict.SetString(ABKUnityPushReceivedCallbackKey, AppboyConfig.IOSPushReceivedCallbackMethodName.Trim());
            }

            if (ValidateListenerFields(ABKUnityPushOpenedGameObjectKey, AppboyConfig.IOSPushOpenedGameObjectName,
              ABKUnityPushOpenedCallbackKey, AppboyConfig.IOSPushOpenedCallbackMethodName)) {
              appboyUnityDict.SetString(ABKUnityPushOpenedGameObjectKey, AppboyConfig.IOSPushOpenedGameObjectName.Trim());
              appboyUnityDict.SetString(ABKUnityPushOpenedCallbackKey, AppboyConfig.IOSPushOpenedCallbackMethodName.Trim());
            }

            // Set in-app message listener
            if (ValidateListenerFields(ABKUnityInAppMessageGameObjectKey, AppboyConfig.IOSInAppMessageGameObjectName,
              ABKUnityInAppMessageCallbackKey, AppboyConfig.IOSInAppMessageCallbackMethodName)) {
              appboyUnityDict.SetString(ABKUnityInAppMessageGameObjectKey, AppboyConfig.IOSInAppMessageGameObjectName.Trim());
              appboyUnityDict.SetString(ABKUnityInAppMessageCallbackKey, AppboyConfig.IOSInAppMessageCallbackMethodName.Trim());
              appboyUnityDict.SetBoolean(ABKUnityHandleInAppMessageDisplayKey, AppboyConfig.IOSDisplayInAppMessages);
            }

            // Set feed listener
            if (ValidateListenerFields(ABKUnityFeedGameObjectKey, AppboyConfig.IOSFeedGameObjectName,
              ABKUnityFeedCallbackKey, AppboyConfig.IOSFeedCallbackMethodName)) {
              appboyUnityDict.SetString(ABKUnityFeedGameObjectKey, AppboyConfig.IOSFeedGameObjectName.Trim());
              appboyUnityDict.SetString(ABKUnityFeedCallbackKey, AppboyConfig.IOSFeedCallbackMethodName.Trim());
            }
              }

              // Write changes to XCode project and Info.plist
              File.WriteAllText(plistPath, plist.WriteToString());
        }