com.azerion.bluestack 3.1.5 → 3.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -2
- package/Editor/Android/AndroidDependencyModifier.cs +58 -0
- package/Editor/Android/AndroidDependencyParser.cs +5 -4
- package/Editor/Android/Gradle/mainTemplate.gradle +1 -1
- package/Editor/Android/ManifestProcessor.cs +1 -1
- package/Editor/BlueStackDependencies.xml +5 -1
- package/Editor/BlueStackMediationNetworks.xml +31 -0
- package/Editor/BlueStackSettings.cs +7 -0
- package/Editor/BlueStackSettingsEditor.cs +45 -24
- package/Editor/DependencyProvider.cs +17 -49
- package/Editor/MediationNetworkDependency.cs +5 -2
- package/Example/Scripts/NativeAdManager.cs +4 -4
- package/Example/Scripts/SmallNativeAdManager.cs +3 -3
- package/Plugins/Android/bluestack-unity-android-bridge-2.0.0.aar +0 -0
- package/Runtime/API/NativeAd/NativeAd.cs +4 -7
- package/Runtime/API/NativeAd/NativeAdObject.cs +198 -138
- package/Runtime/API/Rewarded/RewardedItem.cs +3 -2
- package/Runtime/API/Rewarded/RewardedVideoAd.cs +3 -1
- package/Runtime/Common/NativeAd/NativeUtils.cs +61 -0
- package/Runtime/Internal/IRewardedVideoAdClient.cs +0 -1
- package/Runtime/Platforms/Android/RewardedVideoAdClient.cs +0 -1
- package/Runtime/Platforms/Unity/AdvertisementManager.cs +0 -1
- package/Runtime/Platforms/Unity/RewardedTimer.cs +1 -1
- package/Runtime/Platforms/Unity/RewardedVideoAdClient.cs +0 -1
- package/Runtime/Platforms/iOS/RewardedVideoAdClient.cs +0 -1
- package/package.json +2 -2
- package/Editor/BlueStackMediationDependencies.xml +0 -8
- /package/Editor/{BlueStackMediationDependencies.xml.meta → BlueStackMediationNetworks.xml.meta} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,45 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.1.7] - 2024-10-23
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Renamed the `GetBadge` method to `GetBadgeText`
|
|
8
|
+
- Renamed the `GetTitle` method to `GetTitleText`
|
|
9
|
+
- Renamed the `RegisterImageGameObject` method to `RegisterCoverImageGameObject`
|
|
10
|
+
- Renamed the `RegisterCallToActionGameObject` method to `RegisterCallToActionTextGameObject`
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Rerestricted interaction with Native ad objects while any overlay view is on top.
|
|
15
|
+
|
|
16
|
+
## [3.1.6] - 2024-07-26
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- BlueStack Android SDK version upgraded to 4.4.0
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- Manage Android mediation networks from the BlueStack Settings
|
|
25
|
+
|
|
3
26
|
## [3.1.5] - 2024-07-10
|
|
4
27
|
|
|
5
28
|
### Added
|
|
6
|
-
|
|
29
|
+
|
|
30
|
+
- Method added to refresh Banner in the unity editor
|
|
7
31
|
- Native ad Close method added to trigger OnNativeAdClosed event in the editor
|
|
8
32
|
|
|
9
33
|
### Changed
|
|
34
|
+
|
|
10
35
|
- Unity deprecated methods handled
|
|
11
36
|
- Readme doc update
|
|
12
37
|
|
|
13
38
|
### Fixed
|
|
39
|
+
|
|
14
40
|
- Fixed the BlueStack Settings null exception issue when no settings exist
|
|
15
41
|
- Fixed the issue with saving AdMob App ids
|
|
16
|
-
- Error handled in Native ads, in case of null or empty image urls
|
|
42
|
+
- Error handled in Native ads, in case of null or empty image urls
|
|
17
43
|
|
|
18
44
|
## [3.1.4] - 2024-07-04
|
|
19
45
|
|
|
@@ -2,6 +2,7 @@ using System;
|
|
|
2
2
|
using System.Collections.Generic;
|
|
3
3
|
using System.IO;
|
|
4
4
|
using System.Xml;
|
|
5
|
+
using UnityEditor;
|
|
5
6
|
using UnityEngine;
|
|
6
7
|
|
|
7
8
|
namespace Azerion.BlueStack.Editor.Android
|
|
@@ -10,7 +11,64 @@ namespace Azerion.BlueStack.Editor.Android
|
|
|
10
11
|
{
|
|
11
12
|
void IDependencyModifier.modifyDependencies(string xmlFilePath, List<MediationNetworkDependency> dependencies)
|
|
12
13
|
{
|
|
14
|
+
XmlDocument xmlDoc = new XmlDocument();
|
|
13
15
|
|
|
16
|
+
try
|
|
17
|
+
{
|
|
18
|
+
xmlDoc.Load(xmlFilePath);
|
|
19
|
+
}
|
|
20
|
+
catch (IOException e)
|
|
21
|
+
{
|
|
22
|
+
throw new Exception("Unable to load xml, error: " + e.Message);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
XmlNode androidPackages = xmlDoc.SelectSingleNode($"//dependencies/androidPackages");
|
|
26
|
+
if (androidPackages == null)
|
|
27
|
+
{
|
|
28
|
+
Debug.LogError("No node with the name 'androidPackages' found in the xml");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Remove all networks from the packages node
|
|
33
|
+
// androidPackages.RemoveAll();
|
|
34
|
+
|
|
35
|
+
// Add/remove networks
|
|
36
|
+
foreach (MediationNetworkDependency dependency in dependencies)
|
|
37
|
+
{
|
|
38
|
+
XmlNode packageNode = androidPackages.SelectSingleNode(
|
|
39
|
+
$"//androidPackage[@spec='{dependency.Package}']");
|
|
40
|
+
|
|
41
|
+
if (packageNode != null)
|
|
42
|
+
{
|
|
43
|
+
// Remove inactive network
|
|
44
|
+
if (!dependency.Active)
|
|
45
|
+
{
|
|
46
|
+
androidPackages.RemoveChild(packageNode);
|
|
47
|
+
}
|
|
48
|
+
// else keep it
|
|
49
|
+
}
|
|
50
|
+
else
|
|
51
|
+
{
|
|
52
|
+
// Add new active network
|
|
53
|
+
if (dependency.Active)
|
|
54
|
+
{
|
|
55
|
+
XmlElement package = xmlDoc.CreateElement("androidPackage");
|
|
56
|
+
package.SetAttribute("spec", dependency.Package);
|
|
57
|
+
if (dependency.Repositories != null)
|
|
58
|
+
{
|
|
59
|
+
XmlNode repositories = xmlDoc.ImportNode(dependency.Repositories, true);
|
|
60
|
+
package.AppendChild(repositories);
|
|
61
|
+
}
|
|
62
|
+
androidPackages.AppendChild(package);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Replace main dependency XML content with the updated XML
|
|
68
|
+
System.IO.File.WriteAllText(xmlFilePath, xmlDoc.OuterXml);
|
|
69
|
+
AssetDatabase.Refresh();
|
|
70
|
+
|
|
71
|
+
// Debug.Log("Mediation Dependencies are updated successfully in Main Dependencies XML.");
|
|
14
72
|
}
|
|
15
73
|
|
|
16
74
|
void IDependencyModifier.modifyMediationNetworkDependencies(string xmlFilePath,
|
|
@@ -20,7 +20,6 @@ namespace Azerion.BlueStack.Editor.Android
|
|
|
20
20
|
if (specAttribute == null) continue;
|
|
21
21
|
dependencies.Add(new AndroidDependency(specAttribute.Value, "", ""));
|
|
22
22
|
}
|
|
23
|
-
|
|
24
23
|
return dependencies;
|
|
25
24
|
}
|
|
26
25
|
|
|
@@ -37,15 +36,17 @@ namespace Azerion.BlueStack.Editor.Android
|
|
|
37
36
|
var nameAttribute = androidPackageNode.Attributes?["name"];
|
|
38
37
|
var packageAttribute = androidPackageNode.Attributes?["package"];
|
|
39
38
|
var activeAttribute = androidPackageNode.Attributes?["active"];
|
|
39
|
+
var repositoriesNode = androidPackageNode.SelectSingleNode("repositories");
|
|
40
40
|
if (nameAttribute == null || packageAttribute == null) continue;
|
|
41
41
|
|
|
42
42
|
var name = nameAttribute.Value;
|
|
43
43
|
var package = packageAttribute.Value;
|
|
44
|
-
var active = bool.Parse(activeAttribute.Value);
|
|
44
|
+
var active = activeAttribute != null && bool.Parse(activeAttribute.Value);
|
|
45
45
|
|
|
46
|
-
dependencies.Add(
|
|
46
|
+
dependencies.Add(repositoriesNode != null
|
|
47
|
+
? new MediationNetworkDependency(name, package, active, repositoriesNode)
|
|
48
|
+
: new MediationNetworkDependency(name, package, active));
|
|
47
49
|
}
|
|
48
|
-
|
|
49
50
|
return dependencies;
|
|
50
51
|
}
|
|
51
52
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<dependencies>
|
|
2
2
|
<androidPackages>
|
|
3
|
-
<androidPackage spec="com.azerion:bluestack-sdk-core:4.
|
|
3
|
+
<androidPackage spec="com.azerion:bluestack-sdk-core:4.4.0">
|
|
4
|
+
<repositories>
|
|
5
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
6
|
+
</repositories>
|
|
7
|
+
</androidPackage>
|
|
4
8
|
</androidPackages>
|
|
5
9
|
<iosPods>
|
|
6
10
|
<iosPod name="BlueStack-SDK" version="4.4.6" bitcodeEnabled="false" addToAllTargets="false" subspecs="[]"/>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<networkList>
|
|
2
|
+
<androidNetworks>
|
|
3
|
+
<network name="Criteo In-App Bidding" package="com.azerion:bluestack-mediation-criteo:4.4.0.0" active="true"/>
|
|
4
|
+
<network name="AdColony" package="com.azerion:bluestack-mediation-adcolony:4.4.0.0" active="true"/>
|
|
5
|
+
<network name="Huawei" package="com.azerion:bluestack-mediation-huawei:4.4.0.0" active="true">
|
|
6
|
+
<repositories>
|
|
7
|
+
<repository>https://developer.huawei.com/repo/</repository>
|
|
8
|
+
</repositories>
|
|
9
|
+
</network>
|
|
10
|
+
<network name="GAM / AdMob" package="com.azerion:bluestack-mediation-gma:4.4.0.0" active="true"/>
|
|
11
|
+
<network name="In-App Bidding" package="com.azerion:bluestack-mediation-bidding:4.4.0.0" active="true">
|
|
12
|
+
<repositories>
|
|
13
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
14
|
+
</repositories>
|
|
15
|
+
</network>
|
|
16
|
+
<network name="Smart Display / Equativ" package="com.azerion:bluestack-mediation-smartadserver:4.4.0.0" active="true">
|
|
17
|
+
<repositories>
|
|
18
|
+
<repository>https://packagecloud.io/smartadserver/android/maven2</repository>
|
|
19
|
+
</repositories>
|
|
20
|
+
</network>
|
|
21
|
+
<network name="Ogury" package="com.azerion:bluestack-mediation-ogury:4.4.0.0" active="true">
|
|
22
|
+
<repositories>
|
|
23
|
+
<repository>https://maven.ogury.co/</repository>
|
|
24
|
+
</repositories>
|
|
25
|
+
</network>
|
|
26
|
+
</androidNetworks>
|
|
27
|
+
<iosNetworks>
|
|
28
|
+
<network name="AdMob" package="Google-Mobile-Ads-SDK" active="true"/>
|
|
29
|
+
<network name="Smart Display" package="Smart-Display-SDK" active="true"/>
|
|
30
|
+
</iosNetworks>
|
|
31
|
+
</networkList>
|
|
@@ -31,6 +31,13 @@ namespace Azerion.BlueStack.Editor
|
|
|
31
31
|
get => Instance.iOSMediationNetworks ?? new List<MediationNetworkDependency>();
|
|
32
32
|
set => Instance.iOSMediationNetworks = value;
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
[SerializeField] private List<MediationNetworkDependency> androidMediationNetworks;
|
|
36
|
+
public List<MediationNetworkDependency> AndroidMediationNetworks
|
|
37
|
+
{
|
|
38
|
+
get => Instance.androidMediationNetworks ?? new List<MediationNetworkDependency>();
|
|
39
|
+
set => Instance.androidMediationNetworks = value;
|
|
40
|
+
}
|
|
34
41
|
|
|
35
42
|
public static BlueStackSettings Instance
|
|
36
43
|
{
|
|
@@ -16,9 +16,7 @@ namespace Azerion.BlueStack.Editor
|
|
|
16
16
|
private const string BlueStackSettingsResDir = "Assets/Resources";
|
|
17
17
|
private const string BlueStackSettingsFile = "BlueStackSettings";
|
|
18
18
|
private const string BlueStackSettingsFileExtension = ".asset";
|
|
19
|
-
|
|
20
|
-
private List<bool> iOSMediationNetworkList = new List<bool>();
|
|
21
|
-
private List<bool> AndroidMediationNetworkList = new List<bool>();
|
|
19
|
+
|
|
22
20
|
SerializedProperty iOSMediationNetworkListProperty;
|
|
23
21
|
SerializedProperty androidMediationNetworkListProperty;
|
|
24
22
|
|
|
@@ -26,7 +24,8 @@ namespace Azerion.BlueStack.Editor
|
|
|
26
24
|
SerializedProperty androidAdmobAppIdProperty;
|
|
27
25
|
|
|
28
26
|
public static event EventHandler<List<MediationNetworkDependency>> onIOSMediationNetworksUpdateEvent;
|
|
29
|
-
public static
|
|
27
|
+
public static event EventHandler<List<MediationNetworkDependency>> onAndroidMediationNetworksUpdateEvent;
|
|
28
|
+
|
|
30
29
|
[MenuItem("Azerion/BlueStack/Settings")]
|
|
31
30
|
public static void OpenInspector()
|
|
32
31
|
{
|
|
@@ -41,7 +40,7 @@ namespace Azerion.BlueStack.Editor
|
|
|
41
40
|
{
|
|
42
41
|
if (BlueStackSettings.Instance == null)
|
|
43
42
|
{
|
|
44
|
-
try
|
|
43
|
+
try
|
|
45
44
|
{
|
|
46
45
|
Directory.CreateDirectory(BlueStackSettingsResDir);
|
|
47
46
|
BlueStackSettings.Instance = ScriptableObject.CreateInstance<BlueStackSettings>();
|
|
@@ -49,8 +48,8 @@ namespace Azerion.BlueStack.Editor
|
|
|
49
48
|
string assetPath = Path.Combine(BlueStackSettingsResDir, BlueStackSettingsFile);
|
|
50
49
|
string assetPathWithExtension = Path.ChangeExtension(assetPath, BlueStackSettingsFileExtension);
|
|
51
50
|
AssetDatabase.CreateAsset(BlueStackSettings.Instance, assetPathWithExtension);
|
|
52
|
-
AssetDatabase.SaveAssets();
|
|
53
|
-
|
|
51
|
+
AssetDatabase.SaveAssets();
|
|
52
|
+
|
|
54
53
|
return true;
|
|
55
54
|
}
|
|
56
55
|
catch (Exception e)
|
|
@@ -86,35 +85,53 @@ namespace Azerion.BlueStack.Editor
|
|
|
86
85
|
if (!DoesBlueStackSettingsExist()) return;
|
|
87
86
|
|
|
88
87
|
BlueStackSettings.Instance.IOSMediationNetworks.Clear();
|
|
89
|
-
|
|
90
|
-
// Sync/Copy base mediation dependency xml file from Package to Assets directory
|
|
91
|
-
DependencyProvider.SyncMediationDependencies();
|
|
88
|
+
BlueStackSettings.Instance.AndroidMediationNetworks.Clear();
|
|
92
89
|
|
|
93
|
-
|
|
90
|
+
// Sync/Copy base mediation dependency xml file from Package to Assets directory
|
|
91
|
+
DependencyProvider.SyncDependenciesXMLs();
|
|
94
92
|
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
var iOSMediationNetworkDependencies = DependencyProvider.GetMediationNetworkDependenciesFromAsset(new IOSDependencyParser());
|
|
94
|
+
var androidMediationNetworkDependencies = DependencyProvider.GetMediationNetworkDependenciesFromAsset(new AndroidDependencyParser());
|
|
97
95
|
|
|
98
|
-
BlueStackSettings.Instance.
|
|
99
|
-
|
|
96
|
+
BlueStackSettings.Instance.AndroidMediationNetworks = androidMediationNetworkDependencies;
|
|
97
|
+
BlueStackSettings.Instance.IOSMediationNetworks = iOSMediationNetworkDependencies;
|
|
100
98
|
|
|
99
|
+
DependencyProvider.UpdateMediationNetworkDependencies(new AndroidDependencyModifier(),
|
|
100
|
+
BlueStackSettings.Instance.AndroidMediationNetworks);
|
|
101
101
|
DependencyProvider.UpdateMediationNetworkDependencies(new IOSDependencyModifier(),
|
|
102
102
|
BlueStackSettings.Instance.IOSMediationNetworks);
|
|
103
|
+
|
|
103
104
|
}
|
|
104
|
-
|
|
105
|
+
|
|
105
106
|
public override void OnInspectorGUI()
|
|
106
107
|
{
|
|
107
108
|
EditorGUI.BeginChangeCheck();
|
|
108
109
|
serializedObject.Update();
|
|
109
110
|
|
|
110
|
-
iOSAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdIOS");
|
|
111
111
|
androidAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdAndroid");
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
iOSAdmobAppIdProperty = serializedObject.FindProperty("admobAppIdIOS");
|
|
113
|
+
|
|
114
114
|
EditorGUILayout.PropertyField(androidAdmobAppIdProperty, new GUIContent("Admob AppId Android: "));
|
|
115
|
+
EditorGUILayout.PropertyField(iOSAdmobAppIdProperty, new GUIContent("Admob AppId IOS: "));
|
|
116
|
+
|
|
117
|
+
// Android Mediation Networks
|
|
115
118
|
EditorGUILayout.Separator();
|
|
116
|
-
EditorGUILayout.LabelField("
|
|
119
|
+
EditorGUILayout.LabelField("Android Mediation Networks: ", EditorStyles.boldLabel);
|
|
120
|
+
|
|
121
|
+
foreach (var dependency in BlueStackSettings.Instance.AndroidMediationNetworks)
|
|
122
|
+
{
|
|
123
|
+
// dependency.Print();
|
|
124
|
+
bool newAutomaticConfigurationFilesUpdate = GUILayout.Toggle(dependency.Active, dependency.Name);
|
|
125
|
+
if (newAutomaticConfigurationFilesUpdate != dependency.Active)
|
|
126
|
+
{
|
|
127
|
+
dependency.Active = newAutomaticConfigurationFilesUpdate;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
117
130
|
|
|
131
|
+
// iOS Mediation Networks
|
|
132
|
+
EditorGUILayout.Separator();
|
|
133
|
+
EditorGUILayout.LabelField("iOS Mediation Networks: ", EditorStyles.boldLabel);
|
|
134
|
+
|
|
118
135
|
foreach (var dependency in BlueStackSettings.Instance.IOSMediationNetworks)
|
|
119
136
|
{
|
|
120
137
|
// dependency.Print();
|
|
@@ -124,17 +141,21 @@ namespace Azerion.BlueStack.Editor
|
|
|
124
141
|
dependency.Active = newAutomaticConfigurationFilesUpdate;
|
|
125
142
|
}
|
|
126
143
|
}
|
|
127
|
-
|
|
144
|
+
|
|
128
145
|
if (EditorGUI.EndChangeCheck())
|
|
129
146
|
{
|
|
130
|
-
|
|
147
|
+
// TODO: Before triggering the event check if any change occured in the list
|
|
131
148
|
onIOSMediationNetworksUpdateEvent?.Invoke(this, BlueStackSettings.Instance.IOSMediationNetworks);
|
|
132
|
-
|
|
149
|
+
onAndroidMediationNetworksUpdateEvent?.Invoke(this, BlueStackSettings.Instance.AndroidMediationNetworks);
|
|
150
|
+
|
|
151
|
+
DependencyProvider.UpdateMediationNetworkDependencies(new AndroidDependencyModifier(),
|
|
152
|
+
BlueStackSettings.Instance.AndroidMediationNetworks);
|
|
133
153
|
DependencyProvider.UpdateMediationNetworkDependencies(new IOSDependencyModifier(),
|
|
134
154
|
BlueStackSettings.Instance.IOSMediationNetworks);
|
|
155
|
+
|
|
135
156
|
serializedObject.ApplyModifiedProperties();
|
|
136
157
|
}
|
|
137
|
-
|
|
158
|
+
|
|
138
159
|
}
|
|
139
160
|
}
|
|
140
161
|
}
|
|
@@ -8,17 +8,13 @@ namespace Azerion.BlueStack.Editor
|
|
|
8
8
|
{
|
|
9
9
|
public class DependencyProvider
|
|
10
10
|
{
|
|
11
|
-
private static readonly string
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
private static readonly string _mediationDependencyPathInPackage =
|
|
15
|
-
"Packages/com.azerion.bluestack/Editor/" + "BlueStackMediationDependencies.xml";
|
|
11
|
+
private static readonly string _editorPathInPackage = "Packages/com.azerion.bluestack/Editor/";
|
|
12
|
+
private static readonly string _dependencyPathInPackage = _editorPathInPackage + "BlueStackDependencies.xml";
|
|
13
|
+
private static readonly string _mediationDependencyPathInPackage = _editorPathInPackage + "BlueStackMediationNetworks.xml";
|
|
16
14
|
|
|
17
15
|
private static readonly string _editorPathInAssets = "Assets/Editor/";
|
|
18
16
|
private static readonly string _dependencyPathInAssets = _editorPathInAssets + "BlueStackDependencies.xml";
|
|
19
|
-
|
|
20
|
-
private static readonly string _mediationDependencyPathInAssets =
|
|
21
|
-
_editorPathInAssets + "BlueStackMediationDependencies.xml";
|
|
17
|
+
private static readonly string _mediationDependencyPathInAssets = _editorPathInAssets + "BlueStackMediationNetworks.xml";
|
|
22
18
|
|
|
23
19
|
public static List<Dependency> GetAllDependencies(IDependencyParser parser)
|
|
24
20
|
{
|
|
@@ -33,23 +29,21 @@ namespace Azerion.BlueStack.Editor
|
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
31
|
|
|
36
|
-
public static List<MediationNetworkDependency>
|
|
32
|
+
public static List<MediationNetworkDependency> GetMediationNetworkDependenciesFromAsset(IDependencyParser parser)
|
|
37
33
|
{
|
|
38
34
|
if (File.Exists(_mediationDependencyPathInAssets))
|
|
39
35
|
{
|
|
40
36
|
return parser.parseMediationNetworkDependencies(_mediationDependencyPathInAssets);
|
|
41
37
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return new List<MediationNetworkDependency>();
|
|
46
|
-
}
|
|
38
|
+
|
|
39
|
+
Debug.LogError("Dependencies file not found at: " + _mediationDependencyPathInAssets);
|
|
40
|
+
return new List<MediationNetworkDependency>();
|
|
47
41
|
}
|
|
48
42
|
|
|
49
43
|
public static void UpdateMediationNetworkDependencies(IDependencyModifier modifier,
|
|
50
44
|
List<MediationNetworkDependency> dependencies)
|
|
51
45
|
{
|
|
52
|
-
// Update Mediation Network Dependencies in
|
|
46
|
+
// Update Mediation Network Dependencies in BlueStackMediationNetworks.xml
|
|
53
47
|
if (File.Exists(_mediationDependencyPathInAssets))
|
|
54
48
|
{
|
|
55
49
|
modifier.modifyMediationNetworkDependencies(_mediationDependencyPathInAssets, dependencies);
|
|
@@ -70,7 +64,7 @@ namespace Azerion.BlueStack.Editor
|
|
|
70
64
|
}
|
|
71
65
|
}
|
|
72
66
|
|
|
73
|
-
public static void
|
|
67
|
+
public static void SyncDependenciesXMLs()
|
|
74
68
|
{
|
|
75
69
|
// Copy from the source
|
|
76
70
|
CopyDependenciesXMLFileToAssets();
|
|
@@ -129,39 +123,6 @@ namespace Azerion.BlueStack.Editor
|
|
|
129
123
|
|
|
130
124
|
// Debug.Log("Mediation Dependency XML files merged and updated successfully.");
|
|
131
125
|
}
|
|
132
|
-
|
|
133
|
-
public static void UpdateMediationDependencyXML(List<MediationNetworkDependency> dependencies)
|
|
134
|
-
{
|
|
135
|
-
// if file doesn't exists, return
|
|
136
|
-
if (!File.Exists(_mediationDependencyPathInAssets))
|
|
137
|
-
{
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
XmlDocument mainDependencyXML = new XmlDocument();
|
|
142
|
-
mainDependencyXML.Load(_mediationDependencyPathInAssets);
|
|
143
|
-
|
|
144
|
-
foreach (MediationNetworkDependency dependency in dependencies)
|
|
145
|
-
{
|
|
146
|
-
XmlNode mainNode = mainDependencyXML.SelectSingleNode($"//network[@name='{dependency.Name}']");
|
|
147
|
-
|
|
148
|
-
if (mainNode != null)
|
|
149
|
-
{
|
|
150
|
-
mainNode.Attributes["active"].Value = dependency.Active.ToString();
|
|
151
|
-
}
|
|
152
|
-
else
|
|
153
|
-
{
|
|
154
|
-
// Node doesn't exists in Mediation Dependency XML
|
|
155
|
-
Debug.LogError("Something went wrong: Node doesn't exists in Mediation Dependency XML! " +
|
|
156
|
-
"Please check if you have manually changed the xml");
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Save the modified XML
|
|
161
|
-
SaveMainXMLFile(mainDependencyXML.OuterXml);
|
|
162
|
-
|
|
163
|
-
Debug.Log("Mediation Dependency XML files merged and updated successfully.");
|
|
164
|
-
}
|
|
165
126
|
|
|
166
127
|
private static bool XMLStructuresMatch(XmlDocument mainDoc, XmlDocument updateDoc)
|
|
167
128
|
{
|
|
@@ -197,6 +158,13 @@ namespace Azerion.BlueStack.Editor
|
|
|
197
158
|
|
|
198
159
|
private static bool CopyMediationDependenciesXMLFileToAssets()
|
|
199
160
|
{
|
|
161
|
+
// Delete previous BlueStackMediationDependencies.xml file - TODO: remove in future
|
|
162
|
+
if (File.Exists(_editorPathInAssets + "BlueStackMediationDependencies.xml"))
|
|
163
|
+
{
|
|
164
|
+
FileUtil.DeleteFileOrDirectory(_editorPathInAssets + "BlueStackMediationDependencies.xml");
|
|
165
|
+
AssetDatabase.Refresh();
|
|
166
|
+
}
|
|
167
|
+
|
|
200
168
|
if (!File.Exists(_mediationDependencyPathInAssets))
|
|
201
169
|
{
|
|
202
170
|
Directory.CreateDirectory(_editorPathInAssets);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
using System;
|
|
2
|
+
using System.Xml;
|
|
2
3
|
using UnityEngine;
|
|
3
4
|
|
|
4
5
|
namespace Azerion.BlueStack.Editor
|
|
@@ -6,20 +7,22 @@ namespace Azerion.BlueStack.Editor
|
|
|
6
7
|
[Serializable]
|
|
7
8
|
public class MediationNetworkDependency
|
|
8
9
|
{
|
|
9
|
-
public MediationNetworkDependency(string name, string package, bool active)
|
|
10
|
+
public MediationNetworkDependency(string name, string package, bool active, XmlNode repositories = null)
|
|
10
11
|
{
|
|
11
12
|
Name = name;
|
|
12
13
|
Package = package;
|
|
13
14
|
Active = active;
|
|
15
|
+
Repositories = repositories;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
public string Name { get; set; }
|
|
17
19
|
public string Package { get; set; }
|
|
18
20
|
public bool Active { get; set; }
|
|
21
|
+
public XmlNode Repositories { get; set; }
|
|
19
22
|
|
|
20
23
|
public void Print()
|
|
21
24
|
{
|
|
22
|
-
Debug.Log("Name: " + Name + "Package: " + Package + "Active: " + Active);
|
|
25
|
+
Debug.Log("Name: " + Name + "Package: " + Package + "Active: " + Active + "\nRepositories: " + Repositories.ToString());
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
}
|
|
@@ -86,7 +86,7 @@ namespace Azerion.BlueStack.Example
|
|
|
86
86
|
Debug.Log("NativeAdManager: RegisterGameObjects");
|
|
87
87
|
|
|
88
88
|
// badge
|
|
89
|
-
string badgeText = this.nativeAd.
|
|
89
|
+
string badgeText = this.nativeAd.GetBadgeText();
|
|
90
90
|
if (badgeText != null)
|
|
91
91
|
{
|
|
92
92
|
Debug.Log("NativeAdManager: Register AdChoices");
|
|
@@ -110,7 +110,7 @@ namespace Azerion.BlueStack.Example
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
// Headline/Title
|
|
113
|
-
string titleText = this.nativeAd.
|
|
113
|
+
string titleText = this.nativeAd.GetTitleText();
|
|
114
114
|
if (titleText != null)
|
|
115
115
|
{
|
|
116
116
|
Debug.Log("NativeAdManager: Register Head line");
|
|
@@ -139,7 +139,7 @@ namespace Azerion.BlueStack.Example
|
|
|
139
139
|
{
|
|
140
140
|
Debug.Log("NativeAdManager: Register Cover Images");
|
|
141
141
|
coverImage.GetComponent<RawImage>().texture = imageTexture;
|
|
142
|
-
if (!this.nativeAd.
|
|
142
|
+
if (!this.nativeAd.RegisterCoverImageGameObject(coverImage))
|
|
143
143
|
{
|
|
144
144
|
Debug.Log("RegisterImageGameObject Unsuccessful");
|
|
145
145
|
}
|
|
@@ -151,7 +151,7 @@ namespace Azerion.BlueStack.Example
|
|
|
151
151
|
{
|
|
152
152
|
Debug.Log("NativeAdManager: Register CallToAction");
|
|
153
153
|
callToAction.GetComponent<Text>().text = callToActionText;
|
|
154
|
-
if (!this.nativeAd.
|
|
154
|
+
if (!this.nativeAd.RegisterCallToActionTextGameObject(callToAction))
|
|
155
155
|
{
|
|
156
156
|
Debug.Log("RegisterCallToActionGameObject Unsuccessful");
|
|
157
157
|
}
|
|
@@ -84,7 +84,7 @@ namespace Azerion.BlueStack.Example
|
|
|
84
84
|
Debug.Log("NativeAdManager: RegisterGameObjects");
|
|
85
85
|
|
|
86
86
|
// badge
|
|
87
|
-
string badgeText = this.nativeAd.
|
|
87
|
+
string badgeText = this.nativeAd.GetBadgeText();
|
|
88
88
|
if (badgeText != null)
|
|
89
89
|
{
|
|
90
90
|
Debug.Log("NativeAdManager: Register AdChoices");
|
|
@@ -108,7 +108,7 @@ namespace Azerion.BlueStack.Example
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
// Headline/Title
|
|
111
|
-
string titleText = this.nativeAd.
|
|
111
|
+
string titleText = this.nativeAd.GetTitleText();
|
|
112
112
|
if (titleText != null)
|
|
113
113
|
{
|
|
114
114
|
Debug.Log("NativeAdManager: Register Head line");
|
|
@@ -125,7 +125,7 @@ namespace Azerion.BlueStack.Example
|
|
|
125
125
|
{
|
|
126
126
|
Debug.Log("NativeAdManager: Register CallToAction");
|
|
127
127
|
callToAction.GetComponent<Text>().text = callToActionText;
|
|
128
|
-
if (!this.nativeAd.
|
|
128
|
+
if (!this.nativeAd.RegisterCallToActionTextGameObject(callToAction))
|
|
129
129
|
{
|
|
130
130
|
Debug.Log("RegisterCallToActionGameObject Unsuccessful");
|
|
131
131
|
}
|
|
Binary file
|
|
@@ -19,7 +19,6 @@ namespace Azerion.BlueStack.API
|
|
|
19
19
|
internal event EventHandler<BlueStackError> OnNativeAdDidFail;
|
|
20
20
|
// internal event EventHandler<EventArgs> OnNativeAdOpening; //TODO
|
|
21
21
|
internal event EventHandler<EventArgs> OnNativeAdClosed;
|
|
22
|
-
|
|
23
22
|
public event EventHandler<EventArgs> OnNativeAdImpression;
|
|
24
23
|
public event EventHandler<EventArgs> OnNativeAdClicked;
|
|
25
24
|
|
|
@@ -138,10 +137,8 @@ namespace Azerion.BlueStack.API
|
|
|
138
137
|
}
|
|
139
138
|
}
|
|
140
139
|
|
|
141
|
-
public string
|
|
140
|
+
public string GetTitleText()
|
|
142
141
|
{
|
|
143
|
-
// Debug.Log("GetTitle: " + _nativeAdClient.GetTitle());
|
|
144
|
-
// LoadTextures();
|
|
145
142
|
return _nativeAdClient.GetTitle();
|
|
146
143
|
}
|
|
147
144
|
|
|
@@ -160,7 +157,7 @@ namespace Azerion.BlueStack.API
|
|
|
160
157
|
return _nativeAdClient.GetBadgeBytes();
|
|
161
158
|
}
|
|
162
159
|
|
|
163
|
-
public string
|
|
160
|
+
public string GetBadgeText()
|
|
164
161
|
{
|
|
165
162
|
return _nativeAdClient.GetBadge();
|
|
166
163
|
}
|
|
@@ -200,7 +197,7 @@ namespace Azerion.BlueStack.API
|
|
|
200
197
|
return _nativeAdInteractionHandler.RegisterBodyTextGameObject(gameObject);
|
|
201
198
|
}
|
|
202
199
|
|
|
203
|
-
public bool
|
|
200
|
+
public bool RegisterCoverImageGameObject(GameObject gameObject)
|
|
204
201
|
{
|
|
205
202
|
return _nativeAdInteractionHandler.RegisterImageGameObjects(gameObject);
|
|
206
203
|
}
|
|
@@ -210,7 +207,7 @@ namespace Azerion.BlueStack.API
|
|
|
210
207
|
return _nativeAdInteractionHandler.RegisterIconImageGameObject(gameObject);
|
|
211
208
|
}
|
|
212
209
|
|
|
213
|
-
public bool
|
|
210
|
+
public bool RegisterCallToActionTextGameObject(GameObject gameObject)
|
|
214
211
|
{
|
|
215
212
|
return _nativeAdInteractionHandler.RegisterCallToActionGameObject(gameObject);
|
|
216
213
|
}
|