Add AdNetwork

This commit is contained in:
atusi 2021-10-29 20:28:12 +09:00
parent 189ed1c365
commit 52bc654764
104 changed files with 10289 additions and 34 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a541636fe019e4287bbde9fc5406301a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 949bf3efe84914b718a63835d0f934f3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 39dd59b7c002145379fd263f890f693f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: abf765bf3ce5f4d189d796a59a689c18
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: deecd3a85ccc84a13a0bf611ba4cdbac
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 3a4e527f4fff0443887e8a099e7f5c02
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: 592cfd036a2c941f9ad2da0e1eb567ba
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: b94960ef1b252403380dd890e1c05761
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,245 @@
Copyright (C) 2014 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
====================================================================================================
This package uses MiniJSON
Copyright (c) 2013 Calvin Rien
Based on the JSON parser by Patrick van Bergen
http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
Simplified it so that it doesn't throw exceptions
and can be used in Unity iPhone with maximum code stripping.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 807495fed00f447198f5a6bc6a416c69
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,768 @@
External Dependency Manager for Unity
========
# Overview
The External Dependency Manager for Unity (EDM4U)
(formerly Play Services Resolver / Jar Resolver) is intended to be used by any
Unity plugin that requires:
* Android specific libraries (e.g
[AARs](https://developer.android.com/studio/projects/android-library.html)).
* iOS [CocoaPods](https://cocoapods.org/).
* Version management of transitive dependencies.
* Management of Package Manager (PM) Registries.
Updated releases are available on
[GitHub](https://github.com/googlesamples/unity-jar-resolver)
# Background
Many Unity plugins have dependencies upon Android specific libraries, iOS
CocoaPods, and sometimes have transitive dependencies upon other Unity plugins.
This causes the following problems:
* Integrating platform specific (e.g Android and iOS) libraries within a
Unity project can be complex and a burden on a Unity plugin maintainer.
* The process of resolving conflicting dependencies on platform specific
libraries is pushed to the developer attempting to use a Unity plugin.
The developer trying to use you plugin is very likely to give up when
faced with Android or iOS specific build errors.
* The process of resolving conflicting Unity plugins (due to shared Unity
plugin components) is pushed to the developer attempting to use your Unity
plugin. In an effort to resolve conflicts, the developer will very likely
attempt to resolve problems by deleting random files in your plugin,
report bugs when that doesn't work and finally give up.
EDM provides solutions for each of these problems.
## Android Dependency Management
The *Android Resolver* component of this plugin will download and integrate
Android library dependencies and handle any conflicts between plugins that share
the same dependencies.
Without the Android Resolver, typically Unity plugins bundle their AAR and
JAR dependencies, e.g. a Unity plugin `SomePlugin` that requires the Google
Play Games Android library would redistribute the library and its transitive
dependencies in the folder `SomePlugin/Android/`. When a user imports
`SomeOtherPlugin` that includes the same libraries (potentially at different
versions) in `SomeOtherPlugin/Android/`, the developer using `SomePlugin` and
`SomeOtherPlugin` will see an error when building for Android that can be hard
to interpret.
Using the Android Resolver to manage Android library dependencies:
* Solves Android library conflicts between plugins.
* Handles all of the various processing steps required to use Android
libraries (AARs, JARs) in Unity 4.x and above projects. Almost all
versions of Unity have - at best - partial support for AARs.
* (Experimental) Supports minification of included Java components without
exporting a project.
## iOS Dependency Management
The *iOS Resolver* component of this plugin integrates with
[CocoaPods](https://cocoapods.org/) to download and integrate iOS libraries
and frameworks into the Xcode project Unity generates when building for iOS.
Using CocoaPods allows multiple plugins to utilize shared components without
forcing developers to fix either duplicate or incompatible versions of
libraries included through multiple Unity plugins in their project.
## Package Manager Registry Setup
The [Package Manager](https://docs.unity3d.com/Manual/Packages.html)
(PM) makes use of [NPM](https://www.npmjs.com/) registry servers for package
hosting and provides ways to discover, install, upgrade and uninstall packages.
This makes it easier for developers to manage plugins within their projects.
However, installing additional package registries requires a few manual steps
that can potentially be error prone. The *Package Manager Resolver*
component of this plugin integrates with
[PM](https://docs.unity3d.com/Manual/Packages.html) to provide a way to
auto-install PM package registries when a `.unitypackage` is installed which
allows plugin maintainers to ship a `.unitypackage` that can provide access
to their own PM registry server to make it easier for developers to
manage their plugins.
## Unity Plugin Version Management
Finally, the *Version Handler* component of this plugin simplifies the process
of managing transitive dependencies of Unity plugins and each plugin's upgrade
process.
For example, without the Version Handler plugin, if:
* Unity plugin `SomePlugin` includes `EDM4U` plugin at
version 1.1.
* Unity plugin `SomeOtherPlugin` includes `EDM4U`
plugin at version 1.2.
The version of `EDM4U` included in the developer's project depends upon the
order the developer imports `SomePlugin` or `SomeOtherPlugin`.
This results in:
* `EDM4U` at version 1.2, if `SomePlugin` is imported then `SomeOtherPlugin`
is imported.
* `EDM4U` at version 1.1, if `SomeOtherPlugin` is imported then
`SomePlugin` is imported.
The Version Handler solves the problem of managing transitive dependencies by:
* Specifying a set of packaging requirements that enable a plugin at
different versions to be imported into a Unity project.
* Providing activation logic that selects the latest version of a plugin
within a project.
When using the Version Handler to manage `EDM4U` included in `SomePlugin` and
`SomeOtherPlugin`, from the prior example, version 1.2 will always be the
version activated in a developer's Unity project.
Plugin creators are encouraged to adopt this library to ease integration for
their customers. For more information about integrating EDM4U
into your own plugin, see the [Plugin Redistribution](#plugin-redistribution)
section of this document.
# Analytics
The External Dependency Manager for Unity plugin by default logs usage to Google
Analytics. The purpose of the logging is to quantitatively measure the usage of
functionality, to gather reports on integration failures and to inform future
improvements to the developer experience of the External Dependency Manager
plugin. Note that the analytics collected are limited to the scope of the EDM4U
plugins usage.
For details of what is logged, please refer to the usage of
`EditorMeasurement.Report()` in the source code.
# Requirements
The *Android Resolver* and *iOS Resolver* components of the plugin only work
with Unity version 4.6.8 or higher.
The *Version Handler* component only works with Unity 5.x or higher as it
depends upon the `PluginImporter` UnityEditor API.
The *Package Manager Resolver* component only works with
Unity 2018.4 or above, when
[scoped registry](https://docs.unity3d.com/Manual/upm-scoped.html)
support was added to the Package Manager.
# Getting Started
Before you import EDM4U into your plugin project, you first
need to consider whether you intend to *redistribute* `EDM4U`
along with your own plugin.
## Plugin Redistribution
If you're a plugin maintainer, redistributing `EDM4U` inside your own plugin
will ease the integration process for your users, by resolving dependency
conflicts between your plugin and other plugins in a user's project.
If you wish to redistribute `EDM4U` inside your plugin,
you **must** follow these steps when importing the
`external-dependency-manager-*.unitypackage`, and when exporting your own plugin
package:
1. Import the `external-dependency-manager-*.unitypackage` into your plugin
project by
[running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that
you add the `-gvh_disable` option.
1. Export your plugin by [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that
you:
- Include the contents of the `Assets/PlayServicesResolver` and
`Assets/ExternalDependencyManager` directory.
- Add the `-gvh_disable` option.
You **must** specify the `-gvh_disable` option in order for the Version
Handler to work correctly!
For example, the following command will import the
`external-dependency-manager-1.2.46.0.unitypackage` into the project
`MyPluginProject` and export the entire Assets folder to
`MyPlugin.unitypackage`:
```
Unity -gvh_disable \
-batchmode \
-importPackage external-dependency-manager-1.2.46.0.unitypackage \
-projectPath MyPluginProject \
-exportPackage Assets MyPlugin.unitypackage \
-quit
```
### Background
The *Version Handler* component relies upon deferring the load of editor DLLs
so that it can run first and determine the latest version of a plugin component
to activate. The build of `EDM4U` plugin has Unity asset metadata that is
configured so that the editor components are not initially enabled when it's
imported into a Unity project. To maintain this configuration when importing
the `external-dependency-manager.unitypackage` into a Unity plugin project, you
*must* specify the command line option `-gvh_disable` which will prevent the
Version Handler component from running and changing the Unity asset metadata.
# Android Resolver Usage
The Android Resolver copies specified dependencies from local or remote Maven
repositories into the Unity project when a user selects Android as the build
target in the Unity editor.
1. Add the `external-dependency-manager-*.unitypackage` to your plugin
project (assuming you are developing a plugin). If you are redistributing
EDM4U with your plugin, you **must** follow the
import steps in the [Getting Started](#getting-started) section!
2. Copy and rename the
[SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml)
file into your plugin and add the dependencies your plugin requires.
The XML file just needs to be under an `Editor` directory and match the
name `*Dependencies.xml`. For example,
`MyPlugin/Editor/MyPluginDependencies.xml`.
3. Follow the steps in the [Getting Started](#getting-started)
section when you are exporting your plugin package.
For example, to add the Google Play Games library
(`com.google.android.gms:play-services-games` package) at version `9.8.0` to
the set of a plugin's Android dependencies:
```
<dependencies>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-games:9.8.0">
<androidSdkPackageIds>
<androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
</androidPackage>
</androidPackages>
</dependencies>
```
The version specification (last component) supports:
* Specific versions e.g `9.8.0`
* Partial matches e.g `9.8.+` would match 9.8.0, 9.8.1 etc. choosing the most
recent version.
* Latest version using `LATEST` or `+`. We do *not* recommend using this
unless you're 100% sure the library you depend upon will not break your
Unity plugin in future.
The above example specifies the dependency as a component of the Android SDK
manager such that the Android SDK manager will be executed to install the
package if it's not found. If your Android dependency is located on Maven
central it's possible to specify the package simply using the `androidPackage`
element:
```
<dependencies>
<androidPackages>
<androidPackage spec="com.google.api-client:google-api-client-android:1.22.0" />
</androidPackages>
</dependencies>
```
## Auto-resolution
By default the Android Resolver automatically monitors the dependencies you have
specified and the `Plugins/Android` folder of your Unity project. The
resolution process runs when the specified dependencies are not present in your
project.
The *auto-resolution* process can be disabled via the
`Assets > External Dependency Manager > Android Resolver > Settings` menu.
Manual resolution can be performed using the following menu options:
* `Assets > External Dependency Manager > Android Resolver > Resolve`
* `Assets > External Dependency Manager > Android Resolver > Force Resolve`
## Deleting libraries
Resolved packages are tracked via asset labels by the Android Resolver.
They can easily be deleted using the
`Assets > External Dependency Manager > Android Resolver > Delete Resolved Libraries`
menu item.
## Android Manifest Variable Processing
Some AAR files (for example play-services-measurement) contain variables that
are processed by the Android Gradle plugin. Unfortunately, Unity does not
perform the same processing when using Unity's Internal Build System, so the
Android Resolver plugin handles known cases of this variable substitution
by exploding the AAR into a folder and replacing `${applicationId}` with the
`bundleID`.
Disabling AAR explosion and therefore Android manifest processing can be done
via the `Assets > External Dependency Manager > Android Resolver > Settings`
menu. You may want to disable explosion of AARs if you're exporting a project
to be built with Gradle / Android Studio.
## ABI Stripping
Some AAR files contain native libraries (.so files) for each ABI supported
by Android. Unfortunately, when targeting a single ABI (e.g x86), Unity does
not strip native libraries for unused ABIs. To strip unused ABIs, the Android
Resolver plugin explodes an AAR into a folder and removes unused ABIs to
reduce the built APK size. Furthermore, if native libraries are not stripped
from an APK (e.g you have a mix of Unity's x86 library and some armeabi-v7a
libraries) Android may attempt to load the wrong library for the current
runtime ABI completely breaking your plugin when targeting some architectures.
AAR explosion and therefore ABI stripping can be disabled via the
`Assets > External Dependency Manager > Android Resolver > Settings` menu.
You may want to disable explosion of AARs if you're exporting a project to be
built with Gradle / Android Studio.
## Resolution Strategies
By default the Android Resolver will use Gradle to download dependencies prior
to integrating them into a Unity project. This works with Unity's internal
build system and Gradle / Android Studio project export.
It's possible to change the resolution strategy via the
`Assets > External Dependency Manager > Android Resolver > Settings` menu.
### Download Artifacts with Gradle
Using the default resolution strategy, the Android resolver executes the
following operations:
- Remove the result of previous Android resolutions.
e.g Delete all files and directories labeled with "gpsr" under
`Plugins/Android` from the project.
- Collect the set of Android dependencies (libraries) specified by a
project's `*Dependencies.xml` files.
- Run `download_artifacts.gradle` with Gradle to resolve conflicts and,
if successful, download the set of resolved Android libraries (AARs, JARs).
- Process each AAR / JAR so that it can be used with the currently selected
Unity build system (e.g Internal vs. Gradle, Export vs. No Export).
This involves patching each reference to `applicationId` in the
AndroidManifest.xml with the project's bundle ID. This means resolution
must be run if the bundle ID is changed again.
- Move the processed AARs to `Plugins/Android` so they will be included when
Unity invokes the Android build.
### Integrate into mainTemplate.gradle
Unity 5.6 introduced support for customizing the `build.gradle` used to build
Unity projects with Gradle. When the *Patch mainTemplate.gradle* setting is
enabled, rather than downloading artifacts before the build, Android resolution
results in the execution of the following operations:
- Remove the result of previous Android resolutions.
e.g Delete all files and directories labeled with "gpsr" under
`Plugins/Android` from the project and remove sections delimited with
`// Android Resolver * Start` and `// Android Resolver * End` lines.
- Collect the set of Android dependencies (libraries) specified by a
project's `*Dependencies.xml` files.
- Rename any `.srcaar` files in the build to `.aar` and exclude them from
being included directly by Unity in the Android build as
`mainTemplate.gradle` will be patched to include them instead from their
local maven repositories.
- Inject the required Gradle repositories into `mainTemplate.gradle` at the
line matching the pattern
`.*apply plugin: 'com\.android\.(application|library)'.*` or the section
starting at the line `// Android Resolver Repos Start`.
If you want to control the injection point in the file, the section
delimited by the lines `// Android Resolver Repos Start` and
`// Android Resolver Repos End` should be placed in the global scope
before the `dependencies` section.
- Inject the required Android dependencies (libraries) into
`mainTemplate.gradle` at the line matching the pattern `***DEPS***` or
the section starting at the line `// Android Resolver Dependencies Start`.
If you want to control the injection point in the file, the section
delimited by the lines `// Android Resolver Dependencies Start` and
`// Android Resolver Dependencies End` should be placed in the
`dependencies` section.
- Inject the packaging options logic, which excludes architecture specific
libraries based upon the selected build target, into `mainTemplate.gradle`
at the line matching the pattern `android +{` or the section starting at
the line `// Android Resolver Exclusions Start`.
If you want to control the injection point in the file, the section
delimited by the lines `// Android Resolver Exclusions Start` and
`// Android Resolver Exclusions End` should be placed in the global
scope before the `android` section.
## Dependency Tracking
The Android Resolver creates the
`ProjectSettings/AndroidResolverDependencies.xml` to quickly determine the set
of resolved dependencies in a project. This is used by the auto-resolution
process to only run the expensive resolution process when necessary.
## Displaying Dependencies
It's possible to display the set of dependencies the Android Resolver
would download and process in your project via the
`Assets > External Dependency Manager > Android Resolver > Display Libraries`
menu item.
# iOS Resolver Usage
The iOS resolver component of this plugin manages
[CocoaPods](https://cocoapods.org/). A CocoaPods `Podfile` is generated and
the `pod` tool is executed as a post build process step to add dependencies
to the Xcode project exported by Unity.
Dependencies for iOS are added by referring to CocoaPods.
1. Add the `external-dependency-manager-*.unitypackage` to your plugin
project (assuming you are developing a plugin). If you are redistributing
EDM4U with your plugin, you **must** follow the
import steps in the [Getting Started](#getting-started) section!
2. Copy and rename the
[SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml)
file into your plugin and add the dependencies your plugin requires.
The XML file just needs to be under an `Editor` directory and match the
name `*Dependencies.xml`. For example,
`MyPlugin/Editor/MyPluginDependencies.xml`.
3. Follow the steps in the [Getting Started](#getting-started)
section when you are exporting your plugin package.
For example, to add the AdMob pod, version 7.0 or greater with bitcode enabled:
```
<dependencies>
<iosPods>
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.0" bitcodeEnabled="true"
minTargetSdk="6.0" addToAllTargets="false" />
</iosPods>
</dependencies>
```
## Integration Strategies
The `CocoaPods` are either:
* Downloaded and injected into the Xcode project file directly, rather than
creating a separate xcworkspace. We call this `Xcode project` integration.
* If the Unity version supports opening a xcworkspace file, the `pod` tool
is used as intended to generate a xcworkspace which references the
CocoaPods. We call this `Xcode workspace` integration.
The resolution strategy can be changed via the
`Assets > External Dependency Manager > iOS Resolver > Settings` menu.
### Appending text to generated Podfile
In order to modify the generated Podfile you can create a script like this:
```
using System.IO;
public class PostProcessIOS : MonoBehaviour {
[PostProcessBuildAttribute(45)]//must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50)
private static void PostProcessBuild_iOS(BuildTarget target, string buildPath)
{
if (target == BuildTarget.iOS)
{
using (StreamWriter sw = File.AppendText(buildPath + "/Podfile"))
{
//in this example I'm adding an app extension
sw.WriteLine("\ntarget 'NSExtension' do\n pod 'Firebase/Messaging', '6.6.0'\nend");
}
}
}
```
# Package Manager Resolver Usage
Adding registries to the
[Package Manager](https://docs.unity3d.com/Manual/Packages.html)
(PM) is a manual process. The Package Manager Resolver (PMR) component
of this plugin makes it easy for plugin maintainers to distribute new PM
registry servers and easy for plugin users to manage PM registry servers.
## Adding Registries
1. Add the `external-dependency-manager-*.unitypackage` to your plugin
project (assuming you are developing a plugin). If you are redistributing
EDM4U with your plugin, you **must** follow the
import steps in the [Getting Started](#getting-started) section!
2. Copy and rename the
[SampleRegistries.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/sample/Assets/ExternalDependencyManager/Editor/SampleRegistries.xml)
file into your plugin and add the registries your plugin requires.
The XML file just needs to be under an `Editor` directory and match the
name `*Registries.xml` or labeled with `gumpr_registries`. For example,
`MyPlugin/Editor/MyPluginRegistries.xml`.
3. Follow the steps in the [Getting Started](#getting-started)
section when you are exporting your plugin package.
For example, to add a registry for plugins in the scope `com.coolstuff`:
```
<registries>
<registry name="Cool Stuff"
url="https://unityregistry.coolstuff.com"
termsOfService="https://coolstuff.com/unityregistry/terms"
privacyPolicy="https://coolstuff.com/unityregistry/privacy">
<scopes>
<scope>com.coolstuff</scope>
</scopes>
</registry>
</registries>
```
When PMR is loaded it will prompt the developer to add the registry to their
project if it isn't already present in the `Packages/manifest.json` file.
For more information, see Unity's documentation on
[scoped package registries](https://docs.unity3d.com/Manual/upm-scoped.html).
## Managing Registries
It's possible to add and remove registries that are specified via PMR
XML configuration files via the following menu options:
* `Assets > External Dependency Manager > Package Manager Resolver >
Add Registries` will prompt the user with a window which allows them to
add registries discovered in the project to the Package Manager.
* `Assets > External Dependency Manager > Package Manager Resolver >
Remove Registries` will prompt the user with a window which allows them to
remove registries discovered in the project from the Package Manager.
* `Assets > External Dependency Manager > Package Manager Resolver >
Modify Registries` will prompt the user with a window which allows them to
add or remove registries discovered in the project.
## Migration
PMR can migrate Version Handler packages installed in the `Assets` folder
to PM packages. This requires the plugins to implement the following:
* `.unitypackage` must include a Version Handler manifests that describes
the components of the plugin. If the plugin has no dependencies
the manifest would just include the files in the plugin.
* The PM package JSON provided by the registry must include a keyword
(in the `versions.VERSION.keyword` list) that maps the PM package
to a Version Handler package using the format
`vh-name:VERSION_HANDLER_MANIFEST_NAME` where `VERSION_HANDLER_MANIFEST_NAME`
is the name of the manifest defined in the `.unitypackage`. For
more information see the description of the `gvhp_manifestname` asset label
in the *Version Handler Usage* section.
When using the `Assets > External Dependency Manager >
Package Manager Resolver > Migrate Packages` menu option, PMR then
will:
* List all Version Handler manager packages in the project.
* Search all available packages in the PM registries and fetch keywords
associated with each package parsing the Version Handler manifest names
for each package.
* Map each installed Version Handler package to a PM package.
* Prompt the user to migrate the discovered packages.
* Perform package migration for all selected packages if the user clicks
the `Apply` button.
## Configuration
PMR can be configured via the `Assets > External Dependency Manager >
Package Manager Resolver > Settings` menu option:
* `Add package registries` when enabled, when the plugin loads or registry
configuration files change, this will prompt the user to add registries
that are not present in the Package Manager.
* `Prompt to add package registries` will cause a developer to be prompted
with a window that will ask for confirmation before adding registries.
When this is disabled registries are added silently to the project.
* `Prompt to migrate packages` will cause a developer to be prompted
with a window that will ask for confirmation before migrating packages
installed in the `Assets` directory to PM packages.
* `Enable Analytics Reporting` when enabled, reports the use of the plugin
to the developers so they can make imrpovements.
* `Verbose logging` when enabled prints debug information to the console
which can be useful when filing bug reports.
# Version Handler Usage
The Version Handler component of this plugin manages:
* Shared Unity plugin dependencies.
* Upgrading Unity plugins by cleaning up old files from previous versions.
* Uninstallation of plugins that are distributed with manifest files.
* Restoration of plugin assets to their original install locations if assets
are tagged with the `exportpath` label.
Since the Version Handler needs to modify Unity asset metadata (`.meta` files),
to enable / disable components, rename and delete asset files it does not
work with Package Manager installed packages. It's still possible to
include EDM4U in Package Manager packages, the Version Handler component
simply won't do anything to PM plugins in this case.
## Using Version Handler Managed Plugins
If a plugin is imported at multiple different versions into a project, if
the Version Handler is enabled, it will automatically check all managed
assets to determine the set of assets that are out of date and assets that
should be removed. To disable automatic checking managed assets disable
the `Enable version management` option in the
`Assets > External Dependency Manager > Version Handler > Settings` menu.
If version management is disabled, it's possible to check managed assets
manually using the
`Assets > External Dependency Manager > Version Handler > Update` menu option.
### Listing Managed Plugins
Plugins managed by the Version Handler, those that ship with manifest files,
can displayed using the `Assets > External Dependency Manager >
Version Handler > Display Managed Packages` menu option. The list of plugins
are written to the console window along with the set of files used by each
plugin.
### Uninstalling Managed Plugins
Plugins managed by the Version Handler, those that ship with manifest files,
can be removed using the `Assets > External Dependency Manager >
Version Handler > Uninstall Managed Packages` menu option. This operation
will display a window that allows a developer to select a set of plugins to
remove which will remove all files owned by each plugin excluding those that
are in use by other installed plugins.
Files managed by the Version Handler, those labeled with the `gvh` asset label,
can be checked to see whether anything needs to be upgraded, disabled or
removed using the `Assets > External Dependency Manager >
Version Handler > Update` menu option.
### Restore Install Paths
Some developers move assets around in their project which can make it
harder for plugin maintainers to debug issues if this breaks Unity's
[special folders](https://docs.unity3d.com/Manual/SpecialFolders.html) rules.
If assets are labeled with their original install / export path
(see `gvhp_exportpath` below), Version Handler can restore assets to their
original locations when using the `Assets > External Dependency Manager >
Version Handler > Move Files To Install Locations` menu option.
### Settings
Some behavior of the Version Handler can be configured via the
`Assets > External Dependency Manager > Version Handler > Settings` menu
option.
* `Enable version management` controls whether the plugin should automatically
check asset versions and apply changes. If this is disabled the process
should be run manually when installing or upgrading managed plugins using
`Assets > External Dependency Manager > Version Handler > Update`.
* `Rename to canonical filenames` is a legacy option that will rename files to
remove version numbers and other labels from filenames.
* `Prompt for obsolete file deletion` enables the display of a window when
obsolete files are deleted allowing the developer to select which files to
delete and those to keep.
* `Allow disabling files via renaming` controls whether obsolete or disabled
files should be disabled by renaming them to `myfilename_DISABLED`.
Renaming to disable files is required in some scenarios where Unity doesn't
support removing files from the build via the PluginImporter.
* `Enable Analytics Reporting` enables / disables usage reporting to plugin
developers to improve the product.
* `Verbose logging` enables _very_ noisy log output that is useful for
debugging while filing a bug report or building a new managed plugin.
* `Use project settings` saves settings for the plugin in the project rather
than system-wide.
## Redistributing a Managed Plugin
The Version Handler employs a couple of methods for managing version
selection, upgrade and removal of plugins.
* Each plugin can ship with a manifest file that lists the files it includes.
This makes it possible for Version Handler to calculate the difference
in assets between the most recent release of a plugin and the previous
release installed in a project. If a files are removed the Version Handler
will prompt the user to clean up obsolete files.
* Plugins can ship using assets with unique names, unique GUIDs and version
number labels. Version numbers can be attached to assets using labels or
added to the filename (e.g `myfile.txt` would be `myfile_version-x.y.z.txt).
This allows the Version Handler to determine which set of files are the
same file at different versions, select the most recent version and prompt
the developer to clean up old versions.
Unity plugins can be managed by the Version Handler using the following steps:
1. Add the `gvh` asset label to each asset (file) you want Version Handler
to manage.
1. Add the `gvh_version-VERSION` label to each asset where `VERSION` is the
version of the plugin you're releasing (e.g 1.2.3).
1. Add the `gvhp_exportpath-PATH` label to each asset where `PATH` is the
export path of the file when the `.unitypackage` is created. This is
used to track files if they're moved around in a project by developers.
1. Optional: Add `gvh_targets-editor` label to each editor DLL in your
plugin and disable `editor` as a target platform for the DLL.
The Version Handler will enable the most recent version of this DLL when
the plugin is imported.
1. Optional: If your plugin is included in other Unity plugins, you should
add the version number to each filename and change the GUID of each asset.
This allows multiple versions of your plugin to be imported into a Unity
project, with the Version Handler component activating only the most
recent version.
1. Create a manifest text file named `MY_UNIQUE_PLUGIN_NAME_VERSION.txt`
that lists all the files in your plugin relative to the project root.
Then add the `gvh_manifest` label to the asset to indicate this file is
a plugin manifest.
1. Optional: Add a `gvhp_manifestname-NAME` label to your manifest file
to provide a human readable name for your package. If this isn't provided
the name of the manifest file will be used as the package name.
NAME can match the pattern `[0-9]+[a-zA-Z -]' where a leading integer
will set the priority of the name where `0` is the highest priority
and preferably used as the display name. The lowest value (i.e highest
priority name) will be used as the display name and all other specified
names will be aliases of the display name. Aliases can refer to previous
names of the package allowing renaming across published versions.
1. Redistribute EDM4U Unity plugin with your plugin.
See the [Plugin Redistribution](#plugin-redistribution) for the details.
If you follow these steps:
* When users import a newer version of your plugin, files referenced by the
older version's manifest are cleaned up.
* The latest version of the plugin will be selected when users import
multiple packages that include your plugin, assuming the steps in
[Plugin Redistribution](#plugin-redistribution) are followed.
# Building from Source
To build this plugin from source you need the following tools installed:
* Unity (with iOS and Android modules installed)
You can build the plugin by running the following from your shell
(Linux / OSX):
```
./gradlew build
```
or Windows:
```
./gradlew.bat build
```
# Releasing
Each time a new build of this plugin is checked into the source tree you
need to do the following:
* Bump the plugin version variable `pluginVersion` in `build.gradle`
* Update `CHANGELOG.md` with the new version number and changes included in
the release.
* Build the release using `./gradlew release` which performs the following:
* Updates `external-dependency-manager-*.unitypackage`
* Copies the unpacked plugin to the `exploded` directory.
* Updates template metadata files in the `plugin` directory.
The GUIDs of all asset metadata is modified due to the version number
change. Each file within the plugin is versioned to allow multiple
versions of the plugin to be imported into a Unity project which allows
the most recent version to be activated by the Version Handler
component.
* Create release commit using `./gradlew gitCreateReleaseCommit` which
performs `git commit -a -m "description from CHANGELOG.md"`
* Once the release commit is merge, tag the release using
`./gradlew gitTagRelease` which performs the following:
* `git tag -a pluginVersion -m "version RELEASE"` to tag the release.
* Update tags on remote branch using `git push --tag REMOTE HEAD:master`

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 046625c64f6614014b29265dc01461c1
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,13 @@
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.164.dll
Assets/ExternalDependencyManager/Editor/Google.IOSResolver_v1.2.164.dll.mdb
Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.164.dll
Assets/ExternalDependencyManager/Editor/Google.JarResolver_v1.2.164.dll.mdb
Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.164.dll
Assets/ExternalDependencyManager/Editor/Google.PackageManagerResolver_v1.2.164.dll.mdb
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb
Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.164.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandlerImpl_v1.2.164.dll.mdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 102cb82df4d3147bf867693f29bc5a03
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8de7dc06d234246b388388a6760b3342
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 50d65beef4907445493567daa5ba2ecf
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,546 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &144620207
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 144620210}
- component: {fileID: 144620209}
- component: {fileID: 144620208}
- component: {fileID: 144620211}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &144620208
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 144620207}
m_Enabled: 1
--- !u!20 &144620209
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 144620207}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.9487362, g: 0.9613346, b: 0.9811321, a: 0}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &144620210
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 144620207}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1974370200}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &144620211
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 144620207}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 191f5798a75bd42589f98898505e981f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &484534187
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 484534191}
- component: {fileID: 484534190}
- component: {fileID: 484534189}
- component: {fileID: 484534188}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &484534188
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 484534187}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &484534189
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 484534187}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!223 &484534190
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 484534187}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!224 &484534191
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 484534187}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!1 &498045477
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 498045479}
- component: {fileID: 498045478}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &498045478
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 498045477}
m_Enabled: 1
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &498045479
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 498045477}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &910476656
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 910476659}
- component: {fileID: 910476658}
- component: {fileID: 910476657}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &910476657
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910476656}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &910476658
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910476656}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &910476659
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 910476656}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1488306033
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1488306034}
- component: {fileID: 1488306036}
- component: {fileID: 1488306035}
m_Layer: 5
m_Name: RawImage
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1488306034
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1488306033}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1974370200}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 1}
m_AnchorMax: {x: 0.5, y: 1}
m_AnchoredPosition: {x: 0, y: -117}
m_SizeDelta: {x: 500, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1488306035
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1488306033}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -98529514, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Texture: {fileID: 2800000, guid: 5e326581693fd4e0db4c590543c3edc4, type: 3}
m_UVRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!222 &1488306036
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1488306033}
m_CullTransparentMesh: 0
--- !u!1 &1974370199
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1974370200}
- component: {fileID: 1974370203}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1974370200
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1974370199}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1488306034}
m_Father: {fileID: 144620210}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &1974370203
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1974370199}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ccc0ac08126704384bdda74c26d99797
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,427 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
// Example for IronSource Unity.
public class IronSourceDemoScript : MonoBehaviour
{
public void Start()
{
#if UNITY_ANDROID
string appKey = "85460dcd";
#elif UNITY_IPHONE
string appKey = "8545d445";
#else
string appKey = "unexpected_platform";
#endif
Debug.Log("unity-script: IronSource.Agent.validateIntegration");
IronSource.Agent.validateIntegration();
Debug.Log("unity-script: unity version" + IronSource.unityVersion());
// SDK init
Debug.Log("unity-script: IronSource.Agent.init");
IronSource.Agent.init(appKey);
}
void OnEnable()
{
//Add Rewarded Video Events
IronSourceEvents.onRewardedVideoAdOpenedEvent += RewardedVideoAdOpenedEvent;
IronSourceEvents.onRewardedVideoAdClosedEvent += RewardedVideoAdClosedEvent;
IronSourceEvents.onRewardedVideoAvailabilityChangedEvent += RewardedVideoAvailabilityChangedEvent;
IronSourceEvents.onRewardedVideoAdStartedEvent += RewardedVideoAdStartedEvent;
IronSourceEvents.onRewardedVideoAdEndedEvent += RewardedVideoAdEndedEvent;
IronSourceEvents.onRewardedVideoAdRewardedEvent += RewardedVideoAdRewardedEvent;
IronSourceEvents.onRewardedVideoAdShowFailedEvent += RewardedVideoAdShowFailedEvent;
IronSourceEvents.onRewardedVideoAdClickedEvent += RewardedVideoAdClickedEvent;
//Add Rewarded Video DemandOnly Events
IronSourceEvents.onRewardedVideoAdOpenedDemandOnlyEvent += RewardedVideoAdOpenedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdClosedDemandOnlyEvent += RewardedVideoAdClosedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdLoadedDemandOnlyEvent += RewardedVideoAdLoadedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdRewardedDemandOnlyEvent += RewardedVideoAdRewardedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdShowFailedDemandOnlyEvent += RewardedVideoAdShowFailedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdClickedDemandOnlyEvent += RewardedVideoAdClickedDemandOnlyEvent;
IronSourceEvents.onRewardedVideoAdLoadFailedDemandOnlyEvent += RewardedVideoAdLoadFailedDemandOnlyEvent;
// Add Offerwall Events
IronSourceEvents.onOfferwallClosedEvent += OfferwallClosedEvent;
IronSourceEvents.onOfferwallOpenedEvent += OfferwallOpenedEvent;
IronSourceEvents.onOfferwallShowFailedEvent += OfferwallShowFailedEvent;
IronSourceEvents.onOfferwallAdCreditedEvent += OfferwallAdCreditedEvent;
IronSourceEvents.onGetOfferwallCreditsFailedEvent += GetOfferwallCreditsFailedEvent;
IronSourceEvents.onOfferwallAvailableEvent += OfferwallAvailableEvent;
// Add Interstitial Events
IronSourceEvents.onInterstitialAdReadyEvent += InterstitialAdReadyEvent;
IronSourceEvents.onInterstitialAdLoadFailedEvent += InterstitialAdLoadFailedEvent;
IronSourceEvents.onInterstitialAdShowSucceededEvent += InterstitialAdShowSucceededEvent;
IronSourceEvents.onInterstitialAdShowFailedEvent += InterstitialAdShowFailedEvent;
IronSourceEvents.onInterstitialAdClickedEvent += InterstitialAdClickedEvent;
IronSourceEvents.onInterstitialAdOpenedEvent += InterstitialAdOpenedEvent;
IronSourceEvents.onInterstitialAdClosedEvent += InterstitialAdClosedEvent;
// Add Interstitial DemandOnly Events
IronSourceEvents.onInterstitialAdReadyDemandOnlyEvent += InterstitialAdReadyDemandOnlyEvent;
IronSourceEvents.onInterstitialAdLoadFailedDemandOnlyEvent += InterstitialAdLoadFailedDemandOnlyEvent;
IronSourceEvents.onInterstitialAdShowFailedDemandOnlyEvent += InterstitialAdShowFailedDemandOnlyEvent;
IronSourceEvents.onInterstitialAdClickedDemandOnlyEvent += InterstitialAdClickedDemandOnlyEvent;
IronSourceEvents.onInterstitialAdOpenedDemandOnlyEvent += InterstitialAdOpenedDemandOnlyEvent;
IronSourceEvents.onInterstitialAdClosedDemandOnlyEvent += InterstitialAdClosedDemandOnlyEvent;
// Add Banner Events
IronSourceEvents.onBannerAdLoadedEvent += BannerAdLoadedEvent;
IronSourceEvents.onBannerAdLoadFailedEvent += BannerAdLoadFailedEvent;
IronSourceEvents.onBannerAdClickedEvent += BannerAdClickedEvent;
IronSourceEvents.onBannerAdScreenPresentedEvent += BannerAdScreenPresentedEvent;
IronSourceEvents.onBannerAdScreenDismissedEvent += BannerAdScreenDismissedEvent;
IronSourceEvents.onBannerAdLeftApplicationEvent += BannerAdLeftApplicationEvent;
//Add ImpressionSuccess Event
IronSourceEvents.onImpressionSuccessEvent += ImpressionSuccessEvent;
}
void OnApplicationPause(bool isPaused)
{
Debug.Log("unity-script: OnApplicationPause = " + isPaused);
IronSource.Agent.onApplicationPause(isPaused);
}
public void OnGUI()
{
GUI.backgroundColor = Color.blue;
GUI.skin.button.fontSize = (int)(0.035f * Screen.width);
Rect showRewardedVideoButton = new Rect(0.10f * Screen.width, 0.15f * Screen.height, 0.80f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(showRewardedVideoButton, "Show Rewarded Video"))
{
Debug.Log("unity-script: ShowRewardedVideoButtonClicked");
if (IronSource.Agent.isRewardedVideoAvailable())
{
IronSource.Agent.showRewardedVideo();
}
else
{
Debug.Log("unity-script: IronSource.Agent.isRewardedVideoAvailable - False");
}
}
Rect showOfferwallButton = new Rect(0.10f * Screen.width, 0.25f * Screen.height, 0.80f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(showOfferwallButton, "Show Offerwall"))
{
if (IronSource.Agent.isOfferwallAvailable())
{
IronSource.Agent.showOfferwall();
}
else
{
Debug.Log("IronSource.Agent.isOfferwallAvailable - False");
}
}
Rect loadInterstitialButton = new Rect(0.10f * Screen.width, 0.35f * Screen.height, 0.35f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(loadInterstitialButton, "Load Interstitial"))
{
Debug.Log("unity-script: LoadInterstitialButtonClicked");
IronSource.Agent.loadInterstitial();
}
Rect showInterstitialButton = new Rect(0.55f * Screen.width, 0.35f * Screen.height, 0.35f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(showInterstitialButton, "Show Interstitial"))
{
Debug.Log("unity-script: ShowInterstitialButtonClicked");
if (IronSource.Agent.isInterstitialReady())
{
IronSource.Agent.showInterstitial();
}
else
{
Debug.Log("unity-script: IronSource.Agent.isInterstitialReady - False");
}
}
Rect loadBannerButton = new Rect(0.10f * Screen.width, 0.45f * Screen.height, 0.35f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(loadBannerButton, "Load Banner"))
{
Debug.Log("unity-script: loadBannerButtonClicked");
IronSource.Agent.loadBanner(IronSourceBannerSize.BANNER, IronSourceBannerPosition.BOTTOM);
}
Rect destroyBannerButton = new Rect(0.55f * Screen.width, 0.45f * Screen.height, 0.35f * Screen.width, 0.08f * Screen.height);
if (GUI.Button(destroyBannerButton, "Destroy Banner"))
{
Debug.Log("unity-script: loadBannerButtonClicked");
IronSource.Agent.destroyBanner();
}
}
#region RewardedAd callback handlers
void RewardedVideoAvailabilityChangedEvent(bool canShowAd)
{
Debug.Log("unity-script: I got RewardedVideoAvailabilityChangedEvent, value = " + canShowAd);
}
void RewardedVideoAdOpenedEvent()
{
Debug.Log("unity-script: I got RewardedVideoAdOpenedEvent");
}
void RewardedVideoAdRewardedEvent(IronSourcePlacement ssp)
{
Debug.Log("unity-script: I got RewardedVideoAdRewardedEvent, amount = " + ssp.getRewardAmount() + " name = " + ssp.getRewardName());
}
void RewardedVideoAdClosedEvent()
{
Debug.Log("unity-script: I got RewardedVideoAdClosedEvent");
}
void RewardedVideoAdStartedEvent()
{
Debug.Log("unity-script: I got RewardedVideoAdStartedEvent");
}
void RewardedVideoAdEndedEvent()
{
Debug.Log("unity-script: I got RewardedVideoAdEndedEvent");
}
void RewardedVideoAdShowFailedEvent(IronSourceError error)
{
Debug.Log("unity-script: I got RewardedVideoAdShowFailedEvent, code : " + error.getCode() + ", description : " + error.getDescription());
}
void RewardedVideoAdClickedEvent(IronSourcePlacement ssp)
{
Debug.Log("unity-script: I got RewardedVideoAdClickedEvent, name = " + ssp.getRewardName());
}
/************* RewardedVideo DemandOnly Delegates *************/
void RewardedVideoAdLoadedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got RewardedVideoAdLoadedDemandOnlyEvent for instance: " + instanceId);
}
void RewardedVideoAdLoadFailedDemandOnlyEvent(string instanceId, IronSourceError error)
{
Debug.Log("unity-script: I got RewardedVideoAdLoadFailedDemandOnlyEvent for instance: " + instanceId + ", code : " + error.getCode() + ", description : " + error.getDescription());
}
void RewardedVideoAdOpenedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got RewardedVideoAdOpenedDemandOnlyEvent for instance: " + instanceId);
}
void RewardedVideoAdRewardedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got RewardedVideoAdRewardedDemandOnlyEvent for instance: " + instanceId);
}
void RewardedVideoAdClosedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got RewardedVideoAdClosedDemandOnlyEvent for instance: " + instanceId);
}
void RewardedVideoAdShowFailedDemandOnlyEvent(string instanceId, IronSourceError error)
{
Debug.Log("unity-script: I got RewardedVideoAdShowFailedDemandOnlyEvent for instance: " + instanceId + ", code : " + error.getCode() + ", description : " + error.getDescription());
}
void RewardedVideoAdClickedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got RewardedVideoAdClickedDemandOnlyEvent for instance: " + instanceId);
}
#endregion
#region Interstitial callback handlers
void InterstitialAdReadyEvent()
{
Debug.Log("unity-script: I got InterstitialAdReadyEvent");
}
void InterstitialAdLoadFailedEvent(IronSourceError error)
{
Debug.Log("unity-script: I got InterstitialAdLoadFailedEvent, code: " + error.getCode() + ", description : " + error.getDescription());
}
void InterstitialAdShowSucceededEvent()
{
Debug.Log("unity-script: I got InterstitialAdShowSucceededEvent");
}
void InterstitialAdShowFailedEvent(IronSourceError error)
{
Debug.Log("unity-script: I got InterstitialAdShowFailedEvent, code : " + error.getCode() + ", description : " + error.getDescription());
}
void InterstitialAdClickedEvent()
{
Debug.Log("unity-script: I got InterstitialAdClickedEvent");
}
void InterstitialAdOpenedEvent()
{
Debug.Log("unity-script: I got InterstitialAdOpenedEvent");
}
void InterstitialAdClosedEvent()
{
Debug.Log("unity-script: I got InterstitialAdClosedEvent");
}
/************* Interstitial DemandOnly Delegates *************/
void InterstitialAdReadyDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got InterstitialAdReadyDemandOnlyEvent for instance: " + instanceId);
}
void InterstitialAdLoadFailedDemandOnlyEvent(string instanceId, IronSourceError error)
{
Debug.Log("unity-script: I got InterstitialAdLoadFailedDemandOnlyEvent for instance: " + instanceId + ", error code: " + error.getCode() + ",error description : " + error.getDescription());
}
void InterstitialAdShowFailedDemandOnlyEvent(string instanceId, IronSourceError error)
{
Debug.Log("unity-script: I got InterstitialAdShowFailedDemandOnlyEvent for instance: " + instanceId + ", error code : " + error.getCode() + ",error description : " + error.getDescription());
}
void InterstitialAdClickedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got InterstitialAdClickedDemandOnlyEvent for instance: " + instanceId);
}
void InterstitialAdOpenedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got InterstitialAdOpenedDemandOnlyEvent for instance: " + instanceId);
}
void InterstitialAdClosedDemandOnlyEvent(string instanceId)
{
Debug.Log("unity-script: I got InterstitialAdClosedDemandOnlyEvent for instance: " + instanceId);
}
#endregion
#region Banner callback handlers
void BannerAdLoadedEvent()
{
Debug.Log("unity-script: I got BannerAdLoadedEvent");
}
void BannerAdLoadFailedEvent(IronSourceError error)
{
Debug.Log("unity-script: I got BannerAdLoadFailedEvent, code: " + error.getCode() + ", description : " + error.getDescription());
}
void BannerAdClickedEvent()
{
Debug.Log("unity-script: I got BannerAdClickedEvent");
}
void BannerAdScreenPresentedEvent()
{
Debug.Log("unity-script: I got BannerAdScreenPresentedEvent");
}
void BannerAdScreenDismissedEvent()
{
Debug.Log("unity-script: I got BannerAdScreenDismissedEvent");
}
void BannerAdLeftApplicationEvent()
{
Debug.Log("unity-script: I got BannerAdLeftApplicationEvent");
}
#endregion
#region Offerwall callback handlers
void OfferwallOpenedEvent()
{
Debug.Log("I got OfferwallOpenedEvent");
}
void OfferwallClosedEvent()
{
Debug.Log("I got OfferwallClosedEvent");
}
void OfferwallShowFailedEvent(IronSourceError error)
{
Debug.Log("I got OfferwallShowFailedEvent, code : " + error.getCode() + ", description : " + error.getDescription());
}
void OfferwallAdCreditedEvent(Dictionary<string, object> dict)
{
Debug.Log("I got OfferwallAdCreditedEvent, current credits = " + dict["credits"] + " totalCredits = " + dict["totalCredits"]);
}
void GetOfferwallCreditsFailedEvent(IronSourceError error)
{
Debug.Log("I got GetOfferwallCreditsFailedEvent, code : " + error.getCode() + ", description : " + error.getDescription());
}
void OfferwallAvailableEvent(bool canShowOfferwal)
{
Debug.Log("I got OfferwallAvailableEvent, value = " + canShowOfferwal);
}
#endregion
#region ImpressionSuccess callback handler
void ImpressionSuccessEvent(IronSourceImpressionData impressionData)
{
Debug.Log("unity - script: I got ImpressionSuccessEvent ToString(): " + impressionData.ToString());
Debug.Log("unity - script: I got ImpressionSuccessEvent allData: " + impressionData.allData);
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 191f5798a75bd42589f98898505e981f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 5e326581693fd4e0db4c590543c3edc4
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID:
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fc06ff225d2634d849a99e2c5f3eca8b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,10 @@
using UnityEditor;
namespace IronSource.Editor
{
public interface IAdapterSettings
{
void updateProject(BuildTarget buildTarget, string projectPath);
void updateProjectPlist(BuildTarget buildTarget, string plistPath);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 08c4ce248dc9b4ba2a62a14ef020cc17
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,88 @@
#if UNITY_IOS
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Reflection;
namespace IronSource.Editor
{
public class IronSourceBuildPostprocessor
{
[PostProcessBuild]
public static void OnPostprocessBuild (BuildTarget buildTarget, string buildPath)
{
if (buildTarget == BuildTarget.iOS) {
string projectPath = buildPath + "/Unity-iPhone.xcodeproj/project.pbxproj";
string dirpath = Application.dataPath + "/IronSource/Editor/";
string currentNamespace = MethodBase.GetCurrentMethod().DeclaringType.Namespace;
updateProject (buildTarget, projectPath);
if (Directory.Exists (dirpath)) {
//Match the classes that has "Settings" in their name, and don't start with "I"
var files = Directory.GetFiles (dirpath, "*.cs", SearchOption.TopDirectoryOnly).Where (file => Regex.IsMatch (Path.GetFileName (file), "^(?!(IAdapter|IronSource)).+Settings.*$"));
//Go over all the adapter settings classes, and call their updateProject method
foreach (string file in files) {
string classname = Path.GetFileNameWithoutExtension (file);
if (!String.IsNullOrEmpty (classname)) {
IAdapterSettings adapter = (IAdapterSettings)Activator.CreateInstance (Type.GetType (currentNamespace + "." + classname));
adapter.updateProject (buildTarget, projectPath);
}
}
}
}
Debug.Log ("IronSource build postprocessor finished");
}
private static void updateProject (BuildTarget buildTarget, string projectPath)
{
Debug.Log ("IronSource - Update project for IronSource");
PBXProject project = new PBXProject ();
project.ReadFromString (File.ReadAllText (projectPath));
string targetId;
#if UNITY_2019_3_OR_NEWER
targetId = project.GetUnityMainTargetGuid();
#else
targetId = project.TargetGuidByName(PBXProject.GetUnityTargetName());
#endif
// Required System Frameworks
project.AddFrameworkToProject (targetId, "AdSupport.framework", false);
project.AddFrameworkToProject (targetId, "AudioToolbox.framework", false);
project.AddFrameworkToProject (targetId, "AVFoundation.framework", false);
project.AddFrameworkToProject (targetId, "CoreGraphics.framework", false);
project.AddFrameworkToProject (targetId, "CoreMedia.framework", false);
project.AddFrameworkToProject (targetId, "CoreTelephony.framework", false);
project.AddFrameworkToProject (targetId, "CoreVideo.framework", false);
project.AddFrameworkToProject (targetId, "CFNetwork.framework", false);
project.AddFrameworkToProject (targetId, "Foundation.framework", false);
project.AddFrameworkToProject (targetId, "MobileCoreServices.framework", false);
project.AddFrameworkToProject (targetId, "QuartzCore.framework", false);
project.AddFrameworkToProject (targetId, "Security.framework", false);
project.AddFrameworkToProject (targetId, "StoreKit.framework", false);
project.AddFrameworkToProject (targetId, "SystemConfiguration.framework", false);
project.AddFrameworkToProject (targetId, "WebKit.framework", false);
project.AddFileToBuild (targetId, project.AddFile ("usr/lib/libz.tbd", "Frameworks/libz.tbd", PBXSourceTree.Sdk));
// Custom Link Flag
project.AddBuildProperty (targetId, "OTHER_LDFLAGS", "-ObjC");
File.WriteAllText (projectPath, project.WriteToString ());
}
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 160c30613c17c4bc1a9dfcc2b2663ff4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,558 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Xml;
using IronSourceJSON;
using UnityEditor;
using UnityEngine;
using UnityEngine.Networking;
public class IronSourceDependenciesManager : EditorWindow
{
private const string jsonURL = "http://ssa.public.s3.amazonaws.com/Ironsource-Integration-Manager/IronSourceSDKInfo.json";
private const string ironSourceDownloadDir = "Assets/IronSource/Editor/";
private const string sdk = "sdk";
private const string errorMessage = "SDK and adapters data are not available right now. Try again soon.";
private const int Width = 760;
private const int Height = 760;
private const string Android = "Android";
private const string iOS = "iOS";
private readonly SortedSet<providerInfo> providersSet = new SortedSet<providerInfo>(new ProviderInfoComparor());
private providerInfo ironSourceProviderInfo;
private UnityWebRequest downloadWebClient;
private string messageData;
private IronSourceEditorCoroutines mEditorCoroutines;
private GUIStyle headerStyle;
private GUIStyle textStyle;
private GUIStyle boldTextStyle;
private readonly GUILayoutOption buttonWidth = GUILayout.Width(90);
public class providerInfo
{
public Status currentStatues;
public string providerName;
public string currentUnityVersion;
public string latestUnityVersion;
public string downloadURL;
public string displayProviderName;
public bool isNewProvider;
public string fileName;
public Dictionary<string, string> sdkVersionDic;
public providerInfo()
{
isNewProvider = false;
fileName = string.Empty;
downloadURL = string.Empty;
currentUnityVersion = "none";
sdkVersionDic = new Dictionary<string, string>();
}
public enum Status
{
installed = 1,
none = 2,
updated = 3
}
public bool GetFromJson(string name, Dictionary<string, object> dic)
{
providerName = name;
object obj;
dic.TryGetValue("keyname", out obj);
if (obj != null)
{
this.displayProviderName = obj as string;
}
else this.displayProviderName = providerName;
dic.TryGetValue("isNewProvider", out obj);
if (obj != null)
{
this.isNewProvider = bool.Parse(obj as string);
}
//Get Unity versions
if (dic.TryGetValue("Unity", out obj))
{
Dictionary<string, object> remoteVersions = obj as Dictionary<string, object>;
if (remoteVersions != null)
{
if (remoteVersions.TryGetValue("DownloadUrl", out obj))
{
this.downloadURL = obj as string;
}
if (remoteVersions.TryGetValue("FileName", out obj))
{
this.fileName = obj as string;
}
if (remoteVersions.TryGetValue("UnityAdapterVersion", out obj))
{
this.latestUnityVersion = obj as string;
}
}
}
////Get Android version
if (dic.TryGetValue(Android, out obj))
{
Dictionary<string, object> androidVersion = obj as Dictionary<string, object>;
if (androidVersion != null)
{
androidVersion.TryGetValue("version", out obj);
androidVersion = obj as Dictionary<string, object>;
if (androidVersion != null)
{
if (androidVersion.TryGetValue(sdk, out obj))
{
this.sdkVersionDic.Add(Android, obj as string);
}
}
}
}
//Get iOS version
dic.TryGetValue(iOS, out obj);
Dictionary<string, object> iosVersion = obj as Dictionary<string, object>;
if (iosVersion != null)
{
iosVersion.TryGetValue("version", out obj);
iosVersion = obj as Dictionary<string, object>;
if (iosVersion != null)
{
if (iosVersion.TryGetValue(sdk, out obj))
{
this.sdkVersionDic.Add(iOS, obj as string);
}
}
}
currentUnityVersion = GetVersionFromXML(fileName);
if (currentUnityVersion.Equals("none"))
{
currentStatues = Status.none;
}
else
{
if (isNewerVersion(currentUnityVersion, latestUnityVersion))
{
currentStatues = Status.installed;
}
else
{
currentStatues = Status.updated;
}
}
return true;
}
}
private static string GetVersionFromXML(string fileName)
{
XmlDocument xmlDoc = new XmlDocument();
string version = "none";
try
{
xmlDoc.LoadXml(File.ReadAllText(ironSourceDownloadDir + fileName));
}
catch (Exception)
{
return version;
}
var unityVersion = xmlDoc.SelectSingleNode("dependencies/unityversion");
if (unityVersion != null)
{
return (unityVersion.InnerText);
}
File.Delete(ironSourceDownloadDir + fileName);
return version;
}
private IEnumerator GetVersions()
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(jsonURL);
var webRequest = unityWebRequest.SendWebRequest();
while (!webRequest.isDone)
{
yield return new WaitForSeconds(0.1f);
}
if (!unityWebRequest.isHttpError && !unityWebRequest.isNetworkError)
{
string json = unityWebRequest.downloadHandler.text;
providersSet.Clear();
ironSourceProviderInfo = new providerInfo();
Dictionary<string, object> dic = new Dictionary<string, object>();
try
{
dic = Json.Deserialize(json) as Dictionary<string, object>;
}
catch (Exception e)
{
Debug.Log("Error getting response " + e.ToString());
}
if (dic != null && dic.Count != 0)
{
object providersJson;
if (dic.TryGetValue("SDKSInfo", out providersJson))
{
if (providersJson != null)
{
foreach (var item in providersJson as Dictionary<string, object>)
{
providerInfo info = new providerInfo();
if (info.GetFromJson(item.Key, item.Value as Dictionary<string, object>))
{
if (item.Key.ToLower().Contains("ironsource"))
{
ironSourceProviderInfo = info;
}
else
{
providersSet.Add(info);
}
}
}
}
}
if (ironSourceProviderInfo.currentStatues == providerInfo.Status.installed || ironSourceProviderInfo.currentStatues == providerInfo.Status.none)
{
if (dic.TryGetValue("UpdateMessage", out providersJson))
{
messageData = providersJson.ToString();
}
}
else
{
if (dic.TryGetValue("LatestMessage", out providersJson))
{
messageData = providersJson.ToString();
}
}
}
}
Repaint();
}
private void CancelDownload()
{
// if downloader object is still active
if (downloadWebClient != null)
{
downloadWebClient.Abort();
return;
}
if (mEditorCoroutines != null)
{
mEditorCoroutines.StopEditorCoroutine();
mEditorCoroutines = null;
}
downloadWebClient = null;
}
public static void ShowISDependenciesManager()
{
var win = GetWindowWithRect<IronSourceDependenciesManager>(new Rect(0, 0, Width, Height), true);
win.titleContent = new GUIContent("ironSource Integration Manager");
win.Focus();
}
void Awake()
{
headerStyle = new GUIStyle(EditorStyles.label)
{
fontStyle = FontStyle.Bold,
fontSize = 14,
fixedHeight = 20,
stretchWidth = true,
fixedWidth = Width / 4 + 5,
clipping = TextClipping.Overflow,
alignment = TextAnchor.MiddleLeft
};
textStyle = new GUIStyle(EditorStyles.label)
{
fontStyle = FontStyle.Normal,
alignment = TextAnchor.MiddleLeft
};
boldTextStyle = new GUIStyle(EditorStyles.label)
{
fontStyle = FontStyle.Bold
};
CancelDownload();
}
private void OnEnable()
{
mEditorCoroutines = IronSourceEditorCoroutines.StartEditorCoroutine(GetVersions());
}
private void OnDestroy()
{
CancelDownload();
AssetDatabase.Refresh();
}
void DrawProviderItem(providerInfo providerData)
{
if (!providerData.Equals(default(providerInfo)))
{
using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
{
GUI.enabled = true;
bool isNew = providerData.isNewProvider;
string isNewAddition = isNew ? " - New Network" : string.Empty;
string androidVersion = "";
string iosVersion = "";
string tooltipText = "Latest Version: \n " + providerData.providerName + " Adapter Version " + providerData.latestUnityVersion;
if (!providerData.sdkVersionDic.TryGetValue(Android, out androidVersion))
{
androidVersion = "";
}
else tooltipText = tooltipText + "\n Android SDK version " + androidVersion;
if (!providerData.sdkVersionDic.TryGetValue(iOS, out iosVersion))
{
iosVersion = "";
}
else tooltipText = tooltipText + "\n iOS SDK version " + iosVersion;
EditorGUILayout.LabelField(providerData.displayProviderName + isNewAddition, isNew ? boldTextStyle : textStyle);
EditorGUILayout.LabelField(providerData.currentUnityVersion, textStyle);
EditorGUILayout.LabelField(providerData.latestUnityVersion, textStyle);
if (providerData.currentStatues == providerInfo.Status.none)
{
bool btn = GUILayout.Button(new GUIContent
{
text = "Install",
tooltip = tooltipText
}, buttonWidth);
if (btn && downloadWebClient == null)
{
GUI.enabled = true;
IronSourceEditorCoroutines.StartEditorCoroutine(DownloadFile(providerData.downloadURL));
}
}
else if (providerData.currentStatues == providerInfo.Status.installed)
{
var btn = GUILayout.Button(new GUIContent
{
text= "Update",
tooltip = tooltipText
}
,buttonWidth);
if (btn && downloadWebClient == null)
{
GUI.enabled = true;
IronSourceEditorCoroutines.StartEditorCoroutine(DownloadFile(providerData.downloadURL));
}
}
else
{
GUI.enabled = false;
GUILayout.Button(new GUIContent
{
text = "Updated",
tooltip = tooltipText
}, buttonWidth);
}
GUILayout.Space(5);
GUI.enabled = true;
}
}
}
void OnGUI()
{
if (ironSourceProviderInfo == null)
{
GUILayout.Label(errorMessage);
return;
}
GUILayout.Space(10);
using (new EditorGUILayout.VerticalScope("box"))
{
DrawSDKHeader();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
DrawProviderItem(ironSourceProviderInfo);
GUILayout.Space(5);
GUILayout.EndHorizontal();
GUILayout.Space(5);
}
GUILayout.Space(15);
DrawAdaptersHeader();
GUILayout.Space(15);
foreach (var provider in providersSet)
{
DrawProviderItem(provider);
GUILayout.Space(2);
}
GUILayout.Space(30);
if (!string.IsNullOrEmpty(messageData))
{
using (new EditorGUILayout.VerticalScope("box", GUILayout.ExpandHeight(true)))
{
GUILayout.Space(5);
using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
{
EditorGUILayout.SelectableLabel(messageData, EditorStyles.textField, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
}
GUILayout.Space(5);
}
using (new EditorGUILayout.VerticalScope(GUILayout.ExpandHeight(false)))
{
GUILayout.Space(15);
}
}
}
private void DrawSDKHeader()
{
using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
{
EditorGUILayout.LabelField("Current SDK Version", new GUIStyle(EditorStyles.label)
{
fontStyle = FontStyle.Bold,
fontSize = 13,
fixedHeight = 20,
stretchWidth = true,
fixedWidth = Width / 4,
clipping = TextClipping.Overflow,
padding = new RectOffset(Width / 4 + 15, 0, 0, 0)
});
GUILayout.Space(85);
EditorGUILayout.LabelField("Latest SDK Version", new GUIStyle(EditorStyles.label)
{
fontStyle = FontStyle.Bold,
fontSize = 13,
fixedHeight = 20,
stretchWidth = true,
fixedWidth = Screen.width / 4,
clipping = TextClipping.Overflow,
});
}
}
private void DrawAdaptersHeader()
{
using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
{
EditorGUILayout.LabelField("Network", headerStyle);
EditorGUILayout.LabelField("Current Adapter Version", headerStyle);
EditorGUILayout.LabelField("Latest Adapter Version", headerStyle);
GUILayout.Space(30);
EditorGUILayout.LabelField("Action", headerStyle);
}
}
private IEnumerator DownloadFile(string downloadFileUrl)
{
int fileNameIndex = downloadFileUrl.LastIndexOf("/") + 1;
string downloadFileName = downloadFileUrl.Substring(fileNameIndex);
string fileDownloading = string.Format("Downloading {0}", downloadFileName);
string genericFileName = Regex.Replace(downloadFileName, @"_v+(\d\.\d\.\d\.\d|\d\.\d\.\d)", "");
string path = Path.Combine(ironSourceDownloadDir, genericFileName);
bool isCancelled = false;
downloadWebClient = new UnityWebRequest(downloadFileUrl);
downloadWebClient.downloadHandler = new DownloadHandlerFile(path);
downloadWebClient.SendWebRequest();
if (!downloadWebClient.isHttpError && !downloadWebClient.isNetworkError)
{
while (!downloadWebClient.isDone)
{
yield return new WaitForSeconds(0.1f);
if (EditorUtility.DisplayCancelableProgressBar("Download Manager", fileDownloading, downloadWebClient.downloadProgress))
{
if (downloadWebClient.error != null)
{
Debug.LogError(downloadWebClient.error);
}
CancelDownload();
isCancelled = true;
}
}
}
else
{
Debug.LogError("Error Downloading " + genericFileName + " : " + downloadWebClient.error);
}
EditorUtility.ClearProgressBar();
if (genericFileName.EndsWith(".unitypackage") && !isCancelled)
{
AssetDatabase.ImportPackage(Path.Combine(ironSourceDownloadDir, genericFileName), true);
}
else
{
// in case the download was cancelled, delete the file
if(isCancelled && File.Exists(ironSourceDownloadDir + genericFileName))
{
File.Delete(ironSourceDownloadDir + genericFileName);
}
IronSourceEditorCoroutines.StartEditorCoroutine(GetVersions());
}
//clean the downloadWebClient object regardless of whether the request succeeded or failed
downloadWebClient.Dispose();
downloadWebClient = null;
IronSourceEditorCoroutines.StartEditorCoroutine(GetVersions());
}
private static bool isNewerVersion(string current, string latest)
{
bool isNewer = false;
try
{
int[] currentVersion = Array.ConvertAll(current.Split('.'), int.Parse);
int[] remoteVersion = Array.ConvertAll(latest.Split('.'), int.Parse);
int remoteBuild = 0;
int curBuild = 0;
if (currentVersion.Length > 3)
{
curBuild = currentVersion[3];
}
if (remoteVersion.Length > 3)
{
remoteBuild = remoteVersion[3];
}
System.Version cur = new System.Version(currentVersion[0], currentVersion[1], currentVersion[2], curBuild);
System.Version remote = new System.Version(remoteVersion[0], remoteVersion[1], remoteVersion[2], remoteBuild);
isNewer = cur < remote;
}
catch (Exception)
{
}
return isNewer;
}
internal class ProviderInfoComparor : IComparer<providerInfo>
{
public int Compare(providerInfo x, providerInfo y)
{
return x.providerName.CompareTo(y.providerName);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c6e4d9251bd484b8691739732905761c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,37 @@
using UnityEditor;
using System.Collections;
public class IronSourceEditorCoroutines
{
readonly IEnumerator mRoutine;
public static IronSourceEditorCoroutines StartEditorCoroutine( IEnumerator routine)
{
IronSourceEditorCoroutines coroutine = new IronSourceEditorCoroutines(routine);
coroutine.start();
return coroutine;
}
IronSourceEditorCoroutines(IEnumerator routine)
{
mRoutine = routine;
}
void start()
{
EditorApplication.update += update;
}
void update()
{
if(!mRoutine.MoveNext())
{
StopEditorCoroutine();
}
}
public void StopEditorCoroutine()
{
EditorApplication.update -= update;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 001447b23ecb34541b82b7d1874874d9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,134 @@
#if UNITY_ANDROID
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using UnityEditor;
using UnityEditor.Build;
#if UNITY_2018_1_OR_NEWER
using UnityEditor.Build.Reporting;
#endif
using UnityEngine;
#if UNITY_2018_1_OR_NEWER
public class IronSourceManifestProcessor : IPreprocessBuildWithReport
#else
public class IronSourceManifestProcessor : IPreprocessBuild
#endif
{
private const string META_APPLICATION_ID = "com.google.android.gms.ads.APPLICATION_ID";
private XNamespace ns = "http://schemas.android.com/apk/res/android";
public int callbackOrder { get { return 0; } }
#if UNITY_2018_1_OR_NEWER
public void OnPreprocessBuild(BuildReport report)
#else
public void OnPreprocessBuild(BuildTarget target, string path)
#endif
{
if (File.Exists(IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH))
{
string appId = IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.AdmobAndroidAppId;
if (IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.EnableAdmob)
{
string manifestPath = Path.Combine(
Application.dataPath, "IronSource/Plugins/Android/IronSource.plugin/AndroidManifest.xml");
XDocument manifest = null;
try
{
manifest = XDocument.Load(manifestPath);
}
#pragma warning disable 0168
catch (IOException e)
#pragma warning restore 0168
{
StopBuildWithMessage("AndroidManifest.xml is missing. Try re-importing the plugin.");
}
XElement elemManifest = manifest.Element("manifest");
if (elemManifest == null)
{
StopBuildWithMessage("AndroidManifest.xml is not valid. Try re-importing the plugin.");
}
XElement elemApplication = elemManifest.Element("application");
if (elemApplication == null)
{
StopBuildWithMessage("AndroidManifest.xml is not valid. Try re-importing the plugin.");
}
IEnumerable<XElement> metas = elemApplication.Descendants()
.Where(elem => elem.Name.LocalName.Equals("meta-data"));
XElement elemAdMobEnabled = GetMetaElement(metas, META_APPLICATION_ID);
if (appId.Length == 0)
{
StopBuildWithMessage(
"Android AdMob app ID is empty. Please enter your app ID to run ads properly");
}
else if (!Regex.IsMatch(appId, "^[a-zA-Z0-9-~]*$"))
{
StopBuildWithMessage(
"Android AdMob app ID is not valid. Please enter a valid app ID to run ads properly");
}
else if (elemAdMobEnabled == null)
{
elemApplication.Add(CreateMetaElement(META_APPLICATION_ID, appId));
}
else
{
elemAdMobEnabled.SetAttributeValue(ns + "value", appId);
}
elemManifest.Save(manifestPath);
}
}
}
private XElement CreateMetaElement(string name, object value)
{
return new XElement("meta-data",
new XAttribute(ns + "name", name), new XAttribute(ns + "value", value));
}
private XElement GetMetaElement(IEnumerable<XElement> metas, string metaName)
{
foreach (XElement elem in metas)
{
IEnumerable<XAttribute> attrs = elem.Attributes();
foreach (XAttribute attr in attrs)
{
if (attr.Name.Namespace.Equals(ns)
&& attr.Name.LocalName.Equals("name") && attr.Value.Equals(metaName))
{
return elem;
}
}
}
return null;
}
private void StopBuildWithMessage(string message)
{
string prefix = "[IronSourceApplicationSettings] ";
EditorUtility.DisplayDialog(
"IronSource Developer Settings", "Error: " + message, "", "");
#if UNITY_2017_1_OR_NEWER
throw new BuildPlayerWindow.BuildMethodException(prefix + message);
#else
throw new OperationCanceledException(prefix + message);
#endif
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6b63a7ef12abd42eabd7c7b7c8250f83
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,21 @@
using System.IO;
using UnityEngine;
public class IronSourceMediatedNetworkSettings : ScriptableObject
{
public static readonly string MEDIATION_SETTINGS_ASSET_PATH = Path.Combine(IronSourceConstants.IRONSOURCE_RESOURCES_PATH, IronSourceConstants.IRONSOURCE_MEDIATED_NETWORK_SETTING_NAME + ".asset");
[Header("")]
[Header("AdMob Integration")]
[SerializeField]
[Tooltip("This will add AdMob Application ID to AndroidManifest.xml/info.plist")]
public bool EnableAdmob = false;
[SerializeField]
[Tooltip("This Will be added to your AndroidManifest.xml")]
public string AdmobAndroidAppId = string.Empty;
[SerializeField]
[Tooltip("This will be added to your info.plist")]
public string AdmobIOSAppId = string.Empty;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6dcd730eacb2043e8a6f1c61c16243da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,27 @@
using System.IO;
using UnityEditor;
[CustomEditor(typeof(IronSourceMediatedNetworkSettings))]
public class IronSourceMediatedNetworkSettingsInspector : UnityEditor.Editor
{
private static IronSourceMediatedNetworkSettings ironSourceMediatedNetworkSettings;
public static IronSourceMediatedNetworkSettings IronSourceMediatedNetworkSettings
{
get
{
if (ironSourceMediatedNetworkSettings == null)
{
ironSourceMediatedNetworkSettings = AssetDatabase.LoadAssetAtPath<IronSourceMediatedNetworkSettings>(IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH);
if (ironSourceMediatedNetworkSettings == null)
{
IronSourceMediatedNetworkSettings asset = CreateInstance<IronSourceMediatedNetworkSettings>();
Directory.CreateDirectory(IronSourceConstants.IRONSOURCE_RESOURCES_PATH);
AssetDatabase.CreateAsset(asset, IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH);
ironSourceMediatedNetworkSettings = asset;
}
}
return ironSourceMediatedNetworkSettings;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6ddcb1096c420410ead13befae195114
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,27 @@
using System.IO;
using UnityEditor;
[CustomEditor(typeof(IronSourceMediationSettings))]
public class IronSourceMediationSettingsInspector : UnityEditor.Editor
{
private static IronSourceMediationSettings ironSourceMediationSettings;
public static IronSourceMediationSettings IronSourceMediationSettings
{
get
{
if (ironSourceMediationSettings == null)
{
ironSourceMediationSettings = AssetDatabase.LoadAssetAtPath<IronSourceMediationSettings>(IronSourceMediationSettings.IRONSOURCE_SETTINGS_ASSET_PATH);
if (ironSourceMediationSettings == null)
{
IronSourceMediationSettings asset = CreateInstance<IronSourceMediationSettings>();
Directory.CreateDirectory(IronSourceConstants.IRONSOURCE_RESOURCES_PATH);
AssetDatabase.CreateAsset(asset, IronSourceMediationSettings.IRONSOURCE_SETTINGS_ASSET_PATH);
ironSourceMediationSettings = asset;
}
}
return ironSourceMediationSettings;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4a5cecbf374304044822daeaa54c686c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,72 @@
using System.IO;
using UnityEditor;
using UnityEngine;
public class IronSourceMenu : UnityEditor.Editor
{
[MenuItem("IronSource/Documentation", false, 0)]
public static void Documentation()
{
Application.OpenURL("https://developers.ironsrc.com/ironsource-mobile/unity/unity-plugin/");
}
[MenuItem("IronSource/SDK Change Log", false, 1)]
public static void ChangeLog()
{
Application.OpenURL("https://developers.ironsrc.com/ironsource-mobile/unity/sdk-change-log/");
}
[MenuItem("IronSource/Integration Manager", false , 2)]
public static void SdkManagerProd()
{
IronSourceDependenciesManager.ShowISDependenciesManager();
}
[MenuItem("IronSource/Developer Settings/IronSource Mediation Settings", false, 3)]
public static void mediationSettings()
{
string path = "Assets/IronSource/Resources";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var ironSourceMediationSettings = Resources.Load<IronSourceMediationSettings>(IronSourceConstants.IRONSOURCE_MEDIATION_SETTING_NAME);
if (ironSourceMediationSettings == null)
{
Debug.LogWarning(IronSourceConstants.IRONSOURCE_MEDIATION_SETTING_NAME + " can't be found, creating a new one...");
ironSourceMediationSettings = CreateInstance<IronSourceMediationSettings>();
AssetDatabase.CreateAsset(ironSourceMediationSettings, IronSourceMediationSettings.IRONSOURCE_SETTINGS_ASSET_PATH);
ironSourceMediationSettings = Resources.Load<IronSourceMediationSettings>(IronSourceConstants.IRONSOURCE_MEDIATION_SETTING_NAME);
}
Selection.activeObject = ironSourceMediationSettings;
}
[MenuItem("IronSource/Developer Settings/Mediated Network Settings", false, 4)]
public static void mediatedNetworkSettings()
{
string path = IronSourceConstants.IRONSOURCE_RESOURCES_PATH;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
var ironSourceMediatedNetworkSettings = Resources.Load<IronSourceMediatedNetworkSettings>(IronSourceConstants.IRONSOURCE_MEDIATED_NETWORK_SETTING_NAME);
if (ironSourceMediatedNetworkSettings == null)
{
Debug.LogWarning(IronSourceConstants.IRONSOURCE_MEDIATED_NETWORK_SETTING_NAME + " can't be found, creating a new one...");
ironSourceMediatedNetworkSettings = CreateInstance<IronSourceMediatedNetworkSettings>();
AssetDatabase.CreateAsset(ironSourceMediatedNetworkSettings, IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH);
ironSourceMediatedNetworkSettings = Resources.Load<IronSourceMediatedNetworkSettings>(IronSourceConstants.IRONSOURCE_MEDIATED_NETWORK_SETTING_NAME);
}
Selection.activeObject = ironSourceMediatedNetworkSettings;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 70dd99db2841b47fb8709e8e707d714a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,133 @@

#if UNITY_IOS || UNITY_IPHONE
using System.IO;
using UnityEditor.Callbacks;
using UnityEditor;
using System;
using UnityEngine;
using UnityEditor.iOS.Xcode;
using System.Text.RegularExpressions;
/// <summary>
/// PostProcessor script to automatically fill all required dependencies
/// </summary>
public class IronSourcePlistProcessor
{
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string buildPath)
{
if (File.Exists(IronSourceMediationSettings.IRONSOURCE_SETTINGS_ASSET_PATH))
{
if (buildTarget == BuildTarget.iOS)
{
/*
* PBXProject
*/
string plistPath = Path.Combine(buildPath, "Info.plist");
PBXProject project = new PBXProject();
string projectPath = PBXProject.GetPBXProjectPath(buildPath);
project.ReadFromFile(projectPath);
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
if (plist != null)
{
// Get root
PlistElementDict rootDict = plist.root;
// Check if SKAdNetworkItems already exists
PlistElementArray SKAdNetworkItems = null;
if (rootDict.values.ContainsKey("SKAdNetworkItems"))
{
try
{
SKAdNetworkItems = rootDict.values["SKAdNetworkItems"] as PlistElementArray;
}
catch (Exception e)
{
Debug.LogWarning(string.Format("Could not obtain SKAdNetworkItems PlistElementArray: {0}", e.Message));
}
}
//Add IronSource's SKAdNetwork ID
if (IronSourceMediationSettingsInspector.IronSourceMediationSettings.AddIronsourceSkadnetworkID)
{
// If not exists, create it
if (SKAdNetworkItems == null)
{
SKAdNetworkItems = rootDict.CreateArray("SKAdNetworkItems");
}
string plistContent = File.ReadAllText(plistPath);
if (!plistContent.Contains(IronSourceConstants.IRONSOURCE_SKAN_ID_KEY))
{
PlistElementDict SKAdNetworkIdentifierDict = SKAdNetworkItems.AddDict();
SKAdNetworkIdentifierDict.SetString("SKAdNetworkIdentifier", IronSourceConstants.IRONSOURCE_SKAN_ID_KEY);
}
}
File.WriteAllText(plistPath, plist.WriteToString());
}
}
}
if ( File.Exists(IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH))
{
if (buildTarget == BuildTarget.iOS)
{
/*
* PBXProject
*/
string plistPath = Path.Combine(buildPath, "Info.plist");
PBXProject project = new PBXProject();
string projectPath = PBXProject.GetPBXProjectPath(buildPath);
project.ReadFromFile(projectPath);
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
if (plist != null)
{
// Get root
PlistElementDict rootDict = plist.root;
//Adding AdMob App ID to Plist
if (IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.EnableAdmob == true)
{
string appId = IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.AdmobIOSAppId;
if (appId.Length == 0)
{
StopBuildWithMessage(
"iOS AdMob app ID is empty. Please enter your app ID to run ads properly");
}
else if (!Regex.IsMatch(appId, "^[a-zA-Z0-9-~]*$"))
{
StopBuildWithMessage(
"iOS AdMob app ID is not valid. Please enter a valid app ID to run ads properly");
}
else
{
plist.root.SetString("GADApplicationIdentifier", appId);
}
}
File.WriteAllText(plistPath, plist.WriteToString());
}
}
}
}
private static void StopBuildWithMessage(string message)
{
string prefix = "[IronSourceApplicationSettings] ";
EditorUtility.DisplayDialog(
"IronSource Developer Settings", "Error: " + message, "", "");
#if UNITY_2017_1_OR_NEWER
throw new BuildPlayerWindow.BuildMethodException(prefix + message);
#else
throw new OperationCanceledException(prefix + message);
#endif
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 920ec5e5fa67e48c2a6380c2c2be88fc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,42 @@
<dependencies>
<unityversion>7.1.12</unityversion>
<androidPackages>
<androidPackage spec="com.ironsource.sdk:mediationsdk:7.1.12">
<repositories>
<repository>https://android-sdk.is.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-ads-identifier:17.0.0">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-appset:16.0.0">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-basement:17.2.1">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="IronSourceSDK" version="7.1.12">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d618a278f636e4718b9e6409b1f031eb
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 54543a6abf5c743eebffbdd3ab80a1e7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e68fc23b7584a4aeb9ad1faec8a8708c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,28 @@
fileFormatVersion: 2
guid: f1bc66601864e445e88faef50fa5886c
folderAsset: yes
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="preferExternal"
package="com.Company.ProductName"
android:versionName="1.0"
android:versionCode="1">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<!-- AdMob -->
<!--As Requiered By Admob please add your App ID-->
<!--<meta-data-->
<!--android:name="com.google.android.gms.ads.APPLICATION_ID"-->
<!--android:value="YOUR_ADMOB_APP_ID"/>-->
</application>
</manifest>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9632a9cae064644419de54f10c604559
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 52c96c6ebd65b44b3858b9ae1afdf87a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2dbf0193032a2473098de3a49a1e75f7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1 @@
android.library=true

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 21b205bdddcad4558ab4a0831cb093f2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d169a20af57cb4a47b056b3317f02f12
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,78 @@
//
// iOSBridge
//
// Created by Ori on 5/13/15.
//
#import <Foundation/Foundation.h>
#import <IronSource/ISSupersonicAdsConfiguration.h>
#import <IronSource/ISConfigurations.h>
@interface IronSourceUnityConfig:NSObject
//IronSource
- (void) setClientSideCallbacks:(bool)useClientSideCallbacks;
- (void) setLanguage:(NSString *)language;
- (void) setRewardedVideoCustomParams:(NSString *)rvParams;
- (void) setOfferwallCustomParams:(NSString *)owParams;
@end
@implementation IronSourceUnityConfig
//IronSource
- (void) setClientSideCallbacks:(bool)useClientSideCallbacks {
NSNumber *ucsc = @0;
if (useClientSideCallbacks)
ucsc = @1;
[ISSupersonicAdsConfiguration configurations].useClientSideCallbacks = ucsc;
}
- (void) setLanguage:(NSString *)language {
[ISSupersonicAdsConfiguration configurations].language = language;
}
- (void) setRewardedVideoCustomParams:(NSString *)rvParams {
NSError *jsonError;
NSData *objectData = [rvParams dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError];
if (!jsonError)
[ISConfigurations configurations].rewardedVideoCustomParameters = json;
}
- (void) setOfferwallCustomParams:(NSString *)owParams {
NSError *jsonError;
NSData *objectData = [owParams dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError];
if (!jsonError)
[ISConfigurations configurations].offerwallCustomParameters = json;
}
#ifdef __cplusplus
extern "C" {
#endif
#define ParseNSStringParam( _x_ ) ( _x_ != NULL ) ? [NSString stringWithUTF8String:_x_] : [NSString stringWithUTF8String:""]
//IronSource
void CFSetClientSideCallbacks(bool useClientSideCallbacks){
[[IronSourceUnityConfig new] setClientSideCallbacks:useClientSideCallbacks];
}
void CFSetLanguage(const char *language){
[[IronSourceUnityConfig new] setLanguage:ParseNSStringParam(language)];
}
void CFSetRewardedVideoCustomParams(const char *rvParams){
[[IronSourceUnityConfig new] setRewardedVideoCustomParams:ParseNSStringParam(rvParams)];
}
void CFSetOfferwallCustomParams(const char *owParam){
[[IronSourceUnityConfig new] setOfferwallCustomParams:ParseNSStringParam(owParam)];
}
#ifdef __cplusplus
}
#endif
@end

View File

@ -0,0 +1,37 @@
fileFormatVersion: 2
guid: e0be82736da5a41d4af2ea3ac34d5ac4
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
enabled: 1
settings: {}
- first:
tvOS: tvOS
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,17 @@
//
// iOSBridge.h
// iOSBridge
//
// Created by Supersonic.
// Copyright (c) 2015 Supersonic. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <IronSource/IronSource.h>
static NSString * UnityGitHash = @"04bfbea";
@interface iOSBridge : NSObject<ISRewardedVideoDelegate,ISDemandOnlyRewardedVideoDelegate, ISInterstitialDelegate,ISDemandOnlyInterstitialDelegate, ISOfferwallDelegate, ISBannerDelegate, ISSegmentDelegate,ISImpressionDataDelegate, ISConsentViewDelegate>
@end

View File

@ -0,0 +1,27 @@
fileFormatVersion: 2
guid: 33123db285ad544b59cf1c18d83f66b8
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,37 @@
fileFormatVersion: 2
guid: 270589a8de1714a00bc20bfd059e4441
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
iPhone: iOS
second:
enabled: 1
settings: {}
- first:
tvOS: tvOS
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1bbaa67142d994184844ed2864338043
folderAsset: yes
timeCreated: 1486985218
licenseType: Free
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,314 @@
#if UNITY_ANDROID
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
public class AndroidAgent : IronSourceIAgent
{
private static AndroidJavaObject _androidBridge;
private readonly static string AndroidBridge = "com.ironsource.unity.androidbridge.AndroidBridge";
private const string REWARD_AMOUNT = "reward_amount";
private const string REWARD_NAME = "reward_name";
private const string PLACEMENT_NAME = "placement_name";
public AndroidAgent ()
{
Debug.Log ("AndroidAgent ctr");
}
#region IronSourceIAgent implementation
public AndroidJavaObject getBridge ()
{
if (_androidBridge == null)
using (var pluginClass = new AndroidJavaClass( AndroidBridge ))
_androidBridge = pluginClass.CallStatic<AndroidJavaObject> ("getInstance");
return _androidBridge;
}
//******************* Base API *******************//
public void onApplicationPause (bool pause)
{
if (pause)
{
getBridge ().Call ("onPause");
}
else
{
getBridge ().Call ("onResume");
}
}
public void setMediationSegment (string segment)
{
getBridge ().Call ("setMediationSegment", segment);
}
public string getAdvertiserId ()
{
return getBridge ().Call<string> ("getAdvertiserId");
}
public void validateIntegration ()
{
getBridge ().Call ("validateIntegration");
}
public void shouldTrackNetworkState (bool track)
{
getBridge ().Call ("shouldTrackNetworkState", track);
}
public bool setDynamicUserId (string dynamicUserId)
{
return getBridge ().Call<bool> ("setDynamicUserId", dynamicUserId);
}
public void setAdaptersDebug(bool enabled)
{
getBridge ().Call ("setAdaptersDebug", enabled);
}
public void setMetaData(string key, string value)
{
getBridge().Call("setMetaData", key, value);
}
public void setMetaData(string key, params string[] values)
{
getBridge().Call("setMetaData", key, values);
}
public int? getConversionValue()
{
Debug.Log("Unsupported Platform");
return null;
}
//******************* SDK Init *******************//
public void setUserId(string userId) {
getBridge ().Call ("setUserId", userId);
}
public void init(string appKey)
{
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
getBridge ().Call ("init", appKey);
}
public void init (string appKey, params string[] adUnits)
{
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
getBridge ().Call ("init", appKey, adUnits);
}
public void initISDemandOnly (string appKey, params string[] adUnits)
{
getBridge ().Call ("setPluginData", "Unity", IronSource.pluginVersion (), IronSource.unityVersion ());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
getBridge ().Call ("initISDemandOnly", appKey, adUnits);
}
//******************* RewardedVideo API *******************//
public void showRewardedVideo ()
{
getBridge ().Call ("showRewardedVideo");
}
public void showRewardedVideo (string placementName)
{
getBridge ().Call ("showRewardedVideo", placementName);
}
public bool isRewardedVideoAvailable ()
{
return getBridge ().Call<bool> ("isRewardedVideoAvailable");
}
public bool isRewardedVideoPlacementCapped (string placementName)
{
return getBridge ().Call<bool> ("isRewardedVideoPlacementCapped", placementName);
}
public IronSourcePlacement getPlacementInfo (string placementName)
{
string placementInfo = getBridge ().Call<string> ("getPlacementInfo", placementName);
IronSourcePlacement pInfo = null;
if (placementInfo != null) {
Dictionary<string,object> pInfoDic = IronSourceJSON.Json.Deserialize (placementInfo) as Dictionary<string,object>;
string pName = pInfoDic [PLACEMENT_NAME].ToString ();
string rName = pInfoDic [REWARD_NAME].ToString ();
int rAmount = Convert.ToInt32 (pInfoDic [REWARD_AMOUNT].ToString ());
pInfo = new IronSourcePlacement (pName, rName, rAmount);
}
return pInfo;
}
public void setRewardedVideoServerParams(Dictionary<string, string> parameters) {
string json = IronSourceJSON.Json.Serialize (parameters);
getBridge ().Call ("setRewardedVideoServerParams", json);
}
public void clearRewardedVideoServerParams() {
getBridge ().Call ("clearRewardedVideoServerParams");
}
//******************* RewardedVideo DemandOnly API *******************//
public void showISDemandOnlyRewardedVideo (string instanceId)
{
getBridge ().Call ("showISDemandOnlyRewardedVideo",instanceId);
}
public void loadISDemandOnlyRewardedVideo (string instanceId)
{
getBridge ().Call ("loadISDemandOnlyRewardedVideo", instanceId);
}
public bool isISDemandOnlyRewardedVideoAvailable (string instanceId)
{
return getBridge ().Call<bool> ("isISDemandOnlyRewardedVideoAvailable", instanceId);
}
//******************* Interstitial API *******************//
public void loadInterstitial ()
{
getBridge ().Call ("loadInterstitial");
}
public void showInterstitial ()
{
getBridge ().Call ("showInterstitial");
}
public void showInterstitial (string placementName)
{
getBridge ().Call ("showInterstitial", placementName);
}
public bool isInterstitialReady ()
{
return getBridge ().Call<bool> ("isInterstitialReady");
}
public bool isInterstitialPlacementCapped (string placementName)
{
return getBridge ().Call<bool> ("isInterstitialPlacementCapped", placementName);
}
//******************* Interstitial DemandOnly API *******************//
public void loadISDemandOnlyInterstitial (string instanceId)
{
getBridge ().Call ("loadISDemandOnlyInterstitial",instanceId);
}
public void showISDemandOnlyInterstitial (string instanceId)
{
getBridge ().Call ("showISDemandOnlyInterstitial",instanceId);
}
public bool isISDemandOnlyInterstitialReady (string instanceId)
{
return getBridge ().Call<bool> ("isISDemandOnlyInterstitialReady",instanceId);
}
//******************* Offerwall API *******************//
public void showOfferwall ()
{
getBridge ().Call ("showOfferwall");
}
public void showOfferwall (string placementName)
{
getBridge ().Call ("showOfferwall", placementName);
}
public void getOfferwallCredits ()
{
getBridge ().Call ("getOfferwallCredits");
}
public bool isOfferwallAvailable ()
{
return getBridge ().Call<bool> ("isOfferwallAvailable");
}
//******************* Banner API *******************//
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position)
{
loadBanner(size, position, "");
}
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName)
{
getBridge().Call("loadBanner", size.Description, (int)size.Width, (int)size.Height, (int)position, placementName);
}
public void destroyBanner()
{
getBridge ().Call ("destroyBanner");
}
public void displayBanner()
{
getBridge ().Call ("displayBanner");
}
public void hideBanner()
{
getBridge ().Call ("hideBanner");
}
public bool isBannerPlacementCapped(string placementName)
{
return getBridge ().Call<bool> ("isBannerPlacementCapped", placementName);
}
public void setSegment(IronSourceSegment segment)
{
Dictionary <string,string> dict = segment.getSegmentAsDict ();
string json = IronSourceJSON.Json.Serialize (dict);
getBridge ().Call ("setSegment", json);
}
public void setConsent(bool consent)
{
getBridge().Call("setConsent",consent);
}
//******************* ConsentView API *******************//
public void loadConsentViewWithType(string consentViewType)
{
Debug.Log("Unsupported Platform");
}
public void showConsentViewWithType(string consentViewType)
{
Debug.Log("Unsupported Platform");
}
//******************* ILRD API *******************//
public void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData)
{
string json = IronSourceJSON.Json.Serialize(impressionData);
getBridge().Call("setAdRevenueData", dataSource, json);
}
#endregion
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 383e513a18bd7449994e83f8f434e950
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,317 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System;
public class IronSource : IronSourceIAgent
{
private IronSourceIAgent _platformAgent;
private static IronSource _instance;
private const string UNITY_PLUGIN_VERSION = "7.1.12-r";
private static bool isUnsupportedPlatform;
private IronSource()
{
if (!isUnsupportedPlatform)
{
#if UNITY_EDITOR || UNITY_STANDALONE
_platformAgent = new UnsupportedPlatformAgent();
#elif (UNITY_IPHONE || UNITY_IOS)
_platformAgent = new iOSAgent();
#elif UNITY_ANDROID
_platformAgent = new AndroidAgent ();
#endif
}
else
{
_platformAgent = new UnsupportedPlatformAgent();
}
var type = typeof(IronSourceEvents);
var mgr = new GameObject("IronSourceEvents", type).GetComponent<IronSourceEvents>(); // Creates IronSourceEvents gameObject
}
#region IronSourceIAgent implementation
public static IronSource Agent {
get {
if (_instance == null) {
_instance = new IronSource();
}
return _instance;
}
}
public static string pluginVersion()
{
return UNITY_PLUGIN_VERSION;
}
public static string unityVersion()
{
return Application.unityVersion;
}
public static void setUnsupportedPlatform()
{
isUnsupportedPlatform = true;
}
//******************* Base API *******************//
public void onApplicationPause(bool pause)
{
_platformAgent.onApplicationPause(pause);
}
public void setMediationSegment(string segment)
{
_platformAgent.setMediationSegment(segment);
}
public string getAdvertiserId()
{
return _platformAgent.getAdvertiserId();
}
public void validateIntegration()
{
_platformAgent.validateIntegration();
}
public void shouldTrackNetworkState(bool track)
{
_platformAgent.shouldTrackNetworkState(track);
}
public bool setDynamicUserId(string dynamicUserId)
{
return _platformAgent.setDynamicUserId(dynamicUserId);
}
public void setAdaptersDebug(bool enabled)
{
_platformAgent.setAdaptersDebug(enabled);
}
public void setMetaData(string key, string value)
{
_platformAgent.setMetaData(key, value);
}
public void setMetaData(string key, params string[] values)
{
_platformAgent.setMetaData(key, values);
}
public int? getConversionValue()
{
return _platformAgent.getConversionValue();
}
//******************* SDK Init *******************//
public void setUserId (string userId)
{
_platformAgent.setUserId (userId);
}
public void init (string appKey)
{
_platformAgent.init (appKey);
}
public void init (string appKey, params string[] adUnits)
{
_platformAgent.init (appKey, adUnits);
}
public void initISDemandOnly (string appKey, params string[] adUnits)
{
_platformAgent.initISDemandOnly (appKey, adUnits);
}
//******************* RewardedVideo API *******************//
public void showRewardedVideo ()
{
_platformAgent.showRewardedVideo ();
}
public void showRewardedVideo (string placementName)
{
_platformAgent.showRewardedVideo (placementName);
}
public IronSourcePlacement getPlacementInfo (string placementName)
{
return _platformAgent.getPlacementInfo (placementName);
}
public bool isRewardedVideoAvailable ()
{
return _platformAgent.isRewardedVideoAvailable ();
}
public bool isRewardedVideoPlacementCapped (string placementName)
{
return _platformAgent.isRewardedVideoPlacementCapped (placementName);
}
public void setRewardedVideoServerParams(Dictionary<string, string> parameters)
{
_platformAgent.setRewardedVideoServerParams(parameters);
}
public void clearRewardedVideoServerParams()
{
_platformAgent.clearRewardedVideoServerParams();
}
//******************* RewardedVideo DemandOnly API *******************//
public void showISDemandOnlyRewardedVideo (string instanceId)
{
_platformAgent.showISDemandOnlyRewardedVideo(instanceId);
}
public void loadISDemandOnlyRewardedVideo (string instanceId)
{
_platformAgent.loadISDemandOnlyRewardedVideo(instanceId);
}
public bool isISDemandOnlyRewardedVideoAvailable (string instanceId)
{
return _platformAgent.isISDemandOnlyRewardedVideoAvailable(instanceId);
}
//******************* Interstitial API *******************//
public void loadInterstitial ()
{
_platformAgent.loadInterstitial ();
}
public void showInterstitial ()
{
_platformAgent.showInterstitial ();
}
public void showInterstitial (string placementName)
{
_platformAgent.showInterstitial (placementName);
}
public bool isInterstitialReady ()
{
return _platformAgent.isInterstitialReady ();
}
public bool isInterstitialPlacementCapped (string placementName)
{
return _platformAgent.isInterstitialPlacementCapped (placementName);
}
//******************* Interstitial DemandOnly API *******************//
public void loadISDemandOnlyInterstitial (string instanceId)
{
_platformAgent.loadISDemandOnlyInterstitial(instanceId);
}
public void showISDemandOnlyInterstitial (string instanceId)
{
_platformAgent.showISDemandOnlyInterstitial(instanceId);
}
public bool isISDemandOnlyInterstitialReady (string instanceId)
{
return _platformAgent.isISDemandOnlyInterstitialReady(instanceId);
}
//******************* Offerwall API *******************//
public void showOfferwall ()
{
_platformAgent.showOfferwall ();
}
public void showOfferwall (string placementName)
{
_platformAgent.showOfferwall (placementName);
}
public void getOfferwallCredits ()
{
_platformAgent.getOfferwallCredits ();
}
public bool isOfferwallAvailable ()
{
return _platformAgent.isOfferwallAvailable ();
}
//******************* Banner API *******************//
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position)
{
_platformAgent.loadBanner (size, position);
}
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName)
{
_platformAgent.loadBanner (size, position, placementName);
}
public void destroyBanner()
{
_platformAgent.destroyBanner ();
}
public void displayBanner()
{
_platformAgent.displayBanner ();
}
public void hideBanner()
{
_platformAgent.hideBanner ();
}
public bool isBannerPlacementCapped(string placementName)
{
return _platformAgent.isBannerPlacementCapped (placementName);
}
public void setSegment(IronSourceSegment segment)
{
_platformAgent.setSegment (segment);
}
public void setConsent(bool consent)
{
_platformAgent.setConsent(consent);
}
//******************* ConsentView API *******************//
public void loadConsentViewWithType(string consentViewType)
{
_platformAgent.loadConsentViewWithType(consentViewType);
}
public void showConsentViewWithType(string consentViewType)
{
_platformAgent.showConsentViewWithType(consentViewType);
}
//******************* ILRD API *******************//
public void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData)
{
_platformAgent.setAdRevenueData( dataSource , impressionData);
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6ec69520ef1aa4f74b7695ff3da85a8b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,127 @@
using System.Runtime.InteropServices;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class IronSourceConfig
{
private const string unsupportedPlatformStr = "Unsupported Platform";
private static IronSourceConfig _instance;
public static IronSourceConfig Instance {
get {
if (_instance == null) {
_instance = new IronSourceConfig ();
}
return _instance;
}
}
#if UNITY_ANDROID && !UNITY_EDITOR
private static AndroidJavaObject _androidBridge;
private readonly static string AndroidBridge = "com.ironsource.unity.androidbridge.AndroidBridge";
public IronSourceConfig ()
{
using (var pluginClass = new AndroidJavaClass( AndroidBridge ))
_androidBridge = pluginClass.CallStatic<AndroidJavaObject> ("getInstance");
}
//Setters
public void setLanguage (string language)
{
_androidBridge.Call ("setLanguage", language);
}
public void setClientSideCallbacks (bool status)
{
_androidBridge.Call ("setClientSideCallbacks", status);
}
public void setRewardedVideoCustomParams (Dictionary<string,string> rewardedVideoCustomParams)
{
string json = IronSourceJSON.Json.Serialize (rewardedVideoCustomParams);
_androidBridge.Call ("setRewardedVideoCustomParams", json);
}
public void setOfferwallCustomParams (Dictionary<string,string> offerwallCustomParams)
{
string json = IronSourceJSON.Json.Serialize (offerwallCustomParams);
_androidBridge.Call ("setOfferwallCustomParams", json);
}
#elif (UNITY_IPHONE || UNITY_IOS) && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void CFSetLanguage (string language);
[DllImport("__Internal")]
private static extern void CFSetClientSideCallbacks (bool useClientSideCallbacks);
[DllImport("__Internal")]
private static extern void CFSetRewardedVideoCustomParams (string rewardedVideoCustomParams);
[DllImport("__Internal")]
private static extern void CFSetOfferwallCustomParams (string offerwallCustomParams);
public void setLanguage (string language)
{
CFSetLanguage (language);
}
public void setClientSideCallbacks (bool status)
{
CFSetClientSideCallbacks (status);
}
public void setRewardedVideoCustomParams (Dictionary<string,string> rewardedVideoCustomParams)
{
string json = IronSourceJSON.Json.Serialize (rewardedVideoCustomParams);
CFSetRewardedVideoCustomParams (json);
}
public void setOfferwallCustomParams (Dictionary<string,string> offerwallCustomParams)
{
string json = IronSourceJSON.Json.Serialize (offerwallCustomParams);
CFSetOfferwallCustomParams (json);
}
public IronSourceConfig ()
{
}
#else
public void setLanguage (string language)
{
Debug.Log (unsupportedPlatformStr);
}
public void setClientSideCallbacks (bool status)
{
Debug.Log (unsupportedPlatformStr);
}
public void setRewardedVideoCustomParams (Dictionary<string,string> rewardedVideoCustomParams)
{
Debug.Log (unsupportedPlatformStr);
}
public void setOfferwallCustomParams (Dictionary<string,string> offerwallCustomParams)
{
Debug.Log (unsupportedPlatformStr);
}
public IronSourceConfig ()
{
Debug.Log (unsupportedPlatformStr);
}
#endif
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e25760c5c158c41b4aa31bffb0209769
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,35 @@
public static class IronSourceConstants
{
public const string interstitialBridgeListenerClass = "com.ironsource.unity.androidbridge.UnityInterstitialListener";
public const string rewardedVideoBridgeListenerClass = "com.ironsource.unity.androidbridge.UnityRewardedVideoListener";
public const string bridgeClass = "com.ironsource.unity.androidbridge.AndroidBridge";
public const string offerwallBridgeListenerClass = "com.ironsource.unity.androidbridge.UnityOfferwallListener";
public const string bannerBridgeListenerClass = "com.ironsource.unity.androidbridge.UnityBannerListener";
public const string segmentBridgeListenerClass = "com.ironsource.unity.androidbridge.UnitySegmentListener";
public const string ERROR_CODE = "error_code";
public const string ERROR_DESCRIPTION = "error_description";
public const string INSTANCE_ID_KEY = "instanceId";
public const string PLACEMENT_KEY = "placement";
public const string IMPRESSION_DATA_KEY_AUCTION_ID = "auctionId";
public const string IMPRESSION_DATA_KEY_AD_UNIT = "adUnit";
public const string IMPRESSION_DATA_KEY_COUNTRY = "country";
public const string IMPRESSION_DATA_KEY_ABTEST = "ab";
public const string IMPRESSION_DATA_KEY_SEGMENT_NAME = "segmentName";
public const string IMPRESSION_DATA_KEY_PLACEMENT = "placement";
public const string IMPRESSION_DATA_KEY_AD_NETWORK = "adNetwork";
public const string IMPRESSION_DATA_KEY_INSTANCE_NAME = "instanceName";
public const string IMPRESSION_DATA_KEY_INSTANCE_ID = "instanceId";
public const string IMPRESSION_DATA_KEY_REVENUE = "revenue";
public const string IMPRESSION_DATA_KEY_PRECISION = "precision";
public const string IMPRESSION_DATA_KEY_LIFETIME_REVENUE = "lifetimeRevenue";
public const string IMPRESSION_DATA_KEY_ENCRYPTED_CPM = "encryptedCPM";
public const string IMPRESSION_DATA_KEY_CONVERSION_VALUE= "conversionValue";
public const string GENDER_MALE = "male";
public const string GENDER_FEMALE = "female";
public const string GENDER_UNKNOWN = "unknown";
public const string IRONSOURCE_MEDIATION_SETTING_NAME = "IronSourceMediationSettings";
public const string IRONSOURCE_MEDIATED_NETWORK_SETTING_NAME = "IronSourceMediatedNetworkSettings";
public const string IRONSOURCE_RESOURCES_PATH = "Assets/IronSource/Resources";
public const string IRONSOURCE_SKAN_ID_KEY = "su67r6k2v3.skadnetwork";
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 86d04d1d517d942e79c31e208285c06a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,35 @@
using System;
public class IronSourceError
{
private string description;
private int code;
public int getErrorCode ()
{
return code;
}
public string getDescription ()
{
return description;
}
public int getCode ()
{
return code;
}
public IronSourceError (int errorCode, string errorDescription)
{
code = errorCode;
description = errorDescription;
}
public override string ToString ()
{
return code + " : " + description;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c3eeee77c4aea4a979d85dcb1630fbe4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 06a7a5a9d456c4634864ec18b18f72dc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,176 @@
using System.Collections.Generic;
public interface IronSourceIAgent
{
//******************* Base API *******************//
void onApplicationPause (bool pause);
void setMediationSegment (string segment);
string getAdvertiserId ();
void validateIntegration ();
void shouldTrackNetworkState (bool track);
bool setDynamicUserId (string dynamicUserId);
void setAdaptersDebug(bool enabled);
void setMetaData(string key, string value);
void setMetaData(string key, params string[] values);
int? getConversionValue();
//******************* SDK Init *******************//
void setUserId (string userId);
void init (string appKey);
void init (string appKey, params string[] adUnits);
void initISDemandOnly (string appKey, params string[] adUnits);
//******************* RewardedVideo API *******************//
void showRewardedVideo ();
void showRewardedVideo (string placementName);
bool isRewardedVideoAvailable ();
bool isRewardedVideoPlacementCapped (string placementName);
IronSourcePlacement getPlacementInfo (string name);
void setRewardedVideoServerParams(Dictionary<string, string> parameters);
void clearRewardedVideoServerParams();
//******************* RewardedVideo DemandOnly API *******************//
void showISDemandOnlyRewardedVideo (string instanceId);
void loadISDemandOnlyRewardedVideo (string instanceId);
bool isISDemandOnlyRewardedVideoAvailable (string instanceId);
//******************* Interstitial API *******************//
void loadInterstitial ();
void showInterstitial ();
void showInterstitial (string placementName);
bool isInterstitialReady ();
bool isInterstitialPlacementCapped (string placementName);
//******************* Interstitial DemandOnly API *******************//
void loadISDemandOnlyInterstitial (string instanceId);
void showISDemandOnlyInterstitial (string instanceId);
bool isISDemandOnlyInterstitialReady (string instanceId);
//******************* Offerwall API *******************//
void showOfferwall ();
void showOfferwall (string placementName);
bool isOfferwallAvailable ();
void getOfferwallCredits ();
//******************* Banner API *******************//
void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position);
void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName);
void destroyBanner();
void displayBanner();
void hideBanner();
bool isBannerPlacementCapped(string placementName);
void setSegment(IronSourceSegment segment);
void setConsent(bool consent);
//******************* ConsentView API *******************//
void loadConsentViewWithType(string consentViewType);
void showConsentViewWithType(string consentViewType);
//******************* ILRD API *******************//
void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData);
}
public static class dataSource
{
public static string MOPUB { get { return "MoPub"; } }
}
public static class IronSourceAdUnits
{
public static string REWARDED_VIDEO { get { return "rewardedvideo"; } }
public static string INTERSTITIAL { get { return "interstitial"; } }
public static string OFFERWALL { get { return "offerwall"; } }
public static string BANNER { get { return "banner"; } }
}
public class IronSourceBannerSize
{
private int width;
private int height;
private string description;
public static IronSourceBannerSize BANNER = new IronSourceBannerSize("BANNER");
public static IronSourceBannerSize LARGE = new IronSourceBannerSize("LARGE");
public static IronSourceBannerSize RECTANGLE = new IronSourceBannerSize("RECTANGLE");
public static IronSourceBannerSize SMART = new IronSourceBannerSize("SMART");
private IronSourceBannerSize() {
}
public IronSourceBannerSize(int width, int height)
{
this.width = width;
this.height = height;
this.description = "CUSTOM";
}
public IronSourceBannerSize(string description)
{
this.description = description;
this.width = 0;
this.height = 0;
}
public string Description { get { return description; } }
public int Width { get { return width; } }
public int Height { get { return height; } }
};
public enum IronSourceBannerPosition
{
TOP = 1,
BOTTOM = 2
};

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a69a6174c46124e04b4b27ac7fbdd78d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using UnityEngine;
public class IronSourceImpressionData
{
public readonly string auctionId;
public readonly string adUnit;
public readonly string country;
public readonly string ab;
public readonly string segmentName;
public readonly string placement;
public readonly string adNetwork;
public readonly string instanceName;
public readonly string instanceId;
public readonly double? revenue;
public readonly string precision;
public readonly double? lifetimeRevenue;
public readonly string encryptedCPM;
public readonly int? conversionValue;
public readonly string allData;
public IronSourceImpressionData(string json)
{
if (json != null)
{
try
{
object obj;
double parsedDouble;
int parsedInt;
allData = json;
// Retrieve a CultureInfo object.
CultureInfo invCulture = CultureInfo.InvariantCulture;
Dictionary<string, object> jsonDic = IronSourceJSON.Json.Deserialize(json) as Dictionary<string, object>;
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_AUCTION_ID, out obj) && obj != null)
{
auctionId = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_AD_UNIT, out obj) && obj != null)
{
adUnit = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_COUNTRY, out obj) && obj != null)
{
country = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_ABTEST, out obj) && obj != null)
{
ab = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_SEGMENT_NAME, out obj) && obj != null)
{
segmentName = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_PLACEMENT, out obj) && obj != null)
{
placement = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_AD_NETWORK, out obj) && obj != null)
{
adNetwork = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_INSTANCE_NAME, out obj) && obj != null)
{
instanceName = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.INSTANCE_ID_KEY, out obj) && obj != null)
{
instanceId = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_PRECISION, out obj) && obj != null)
{
precision = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_ENCRYPTED_CPM, out obj) && obj != null)
{
encryptedCPM = obj.ToString();
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_REVENUE, out obj) && obj != null && double.TryParse(string.Format(invCulture, "{0}", obj), NumberStyles.Any, invCulture, out parsedDouble))
{
revenue = parsedDouble;
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_LIFETIME_REVENUE, out obj) && obj != null && double.TryParse(string.Format(invCulture,"{0}",obj), NumberStyles.Any, invCulture, out parsedDouble))
{
lifetimeRevenue = parsedDouble;
}
if (jsonDic.TryGetValue(IronSourceConstants.IMPRESSION_DATA_KEY_CONVERSION_VALUE, out obj) && obj != null && int.TryParse(string.Format(invCulture, "{0}", obj), NumberStyles.Any, invCulture, out parsedInt))
{
conversionValue = parsedInt;
}
}
catch (Exception ex)
{
Debug.Log("error parsing impression " + ex.ToString());
}
}
}
public override string ToString()
{
return "IronSourceImpressionData{" +
"auctionId='" + auctionId + '\'' +
", adUnit='" + adUnit + '\'' +
", country='" + country + '\'' +
", ab='" + ab + '\'' +
", segmentName='" + segmentName + '\'' +
", placement='" + placement + '\'' +
", adNetwork='" + adNetwork + '\'' +
", instanceName='" + instanceName + '\'' +
", instanceId='" + instanceId + '\'' +
", revenue=" + revenue +
", precision='" + precision + '\'' +
", lifetimeRevenue=" + lifetimeRevenue +
", encryptedCPM='" + encryptedCPM + '\'' +
", conversionValue=" + conversionValue +
'}';
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7ab0e9e995e4a4024abb4cee85c301ba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,43 @@
using UnityEngine;
public class IronSourceInitilizer
{
#if UNITY_IOS || UNITY_ANDROID
[RuntimeInitializeOnLoadMethod]
static void Initilize()
{
var developerSettings = Resources.Load<IronSourceMediationSettings>(IronSourceConstants.IRONSOURCE_MEDIATION_SETTING_NAME);
if (developerSettings != null)
{
#if UNITY_ANDROID
string appKey = developerSettings.AndroidAppKey;
#elif UNITY_IOS
string appKey = developerSettings.IOSAppKey;
#endif
if (developerSettings.EnableIronsourceSDKInitAPI == true)
{
if (appKey.Equals(string.Empty))
{
Debug.LogWarning("IronSourceInitilizer Cannot init without AppKey");
}
else
{
IronSource.Agent.init(appKey);
}
}
if (developerSettings.EnableAdapterDebug)
{
IronSource.Agent.setAdaptersDebug(true);
}
if (developerSettings.EnableIntegrationHelper)
{
IronSource.Agent.validateIntegration();
}
}
}
#endif
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f3e8e12247da34eafb182ebdfb06c10e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,495 @@
/*
* Based on the miniJSON by Calvin Rien
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
namespace IronSourceJSON
{
public static class Json
{
public static object Deserialize (string json)
{
if (json == null) {
return null;
}
return Parser.Parse (json);
}
sealed class Parser : IDisposable
{
const string WHITE_SPACE = " \t\n\r";
const string WORD_BREAK = " \t\n\r{}[],:\"";
enum TOKEN
{
NONE,
CURLY_OPEN,
CURLY_CLOSE,
SQUARED_OPEN,
SQUARED_CLOSE,
COLON,
COMMA,
STRING,
NUMBER,
TRUE,
FALSE,
NULL
}
;
StringReader json;
Parser (string jsonString)
{
json = new StringReader (jsonString);
}
public static object Parse (string jsonString)
{
using (var instance = new Parser(jsonString)) {
return instance.ParseValue ();
}
}
public void Dispose ()
{
json.Dispose ();
json = null;
}
Dictionary<string, object> ParseObject ()
{
Dictionary<string, object> table = new Dictionary<string, object> ();
// ditch opening brace
json.Read ();
// {
while (true) {
switch (NextToken) {
case TOKEN.NONE:
return null;
case TOKEN.COMMA:
continue;
case TOKEN.CURLY_CLOSE:
return table;
default:
// name
string name = ParseString ();
if (name == null) {
return null;
}
// :
if (NextToken != TOKEN.COLON) {
return null;
}
// ditch the colon
json.Read ();
// value
table [name] = ParseValue ();
break;
}
}
}
List<object> ParseArray ()
{
List<object> array = new List<object> ();
// ditch opening bracket
json.Read ();
// [
var parsing = true;
while (parsing) {
TOKEN nextToken = NextToken;
switch (nextToken) {
case TOKEN.NONE:
return null;
case TOKEN.COMMA:
continue;
case TOKEN.SQUARED_CLOSE:
parsing = false;
break;
default:
object value = ParseByToken (nextToken);
array.Add (value);
break;
}
}
return array;
}
object ParseValue ()
{
TOKEN nextToken = NextToken;
return ParseByToken (nextToken);
}
object ParseByToken (TOKEN token)
{
switch (token) {
case TOKEN.STRING:
return ParseString ();
case TOKEN.NUMBER:
return ParseNumber ();
case TOKEN.CURLY_OPEN:
return ParseObject ();
case TOKEN.SQUARED_OPEN:
return ParseArray ();
case TOKEN.TRUE:
return true;
case TOKEN.FALSE:
return false;
case TOKEN.NULL:
return null;
default:
return null;
}
}
string ParseString ()
{
StringBuilder s = new StringBuilder ();
char c;
// ditch opening quote
json.Read ();
bool parsing = true;
while (parsing) {
if (json.Peek () == -1) {
parsing = false;
break;
}
c = NextChar;
switch (c) {
case '"':
parsing = false;
break;
case '\\':
if (json.Peek () == -1) {
parsing = false;
break;
}
c = NextChar;
switch (c) {
case '"':
case '\\':
case '/':
s.Append (c);
break;
case 'b':
s.Append ('\b');
break;
case 'f':
s.Append ('\f');
break;
case 'n':
s.Append ('\n');
break;
case 'r':
s.Append ('\r');
break;
case 't':
s.Append ('\t');
break;
case 'u':
var hex = new StringBuilder ();
for (int i=0; i< 4; i++) {
hex.Append (NextChar);
}
s.Append ((char)Convert.ToInt32 (hex.ToString (), 16));
break;
}
break;
default:
s.Append (c);
break;
}
}
return s.ToString ();
}
object ParseNumber ()
{
string number = NextWord;
if (number.IndexOf ('.') == -1) {
long parsedInt;
Int64.TryParse (number, NumberStyles.Any, CultureInfo.InvariantCulture, out parsedInt);
return parsedInt;
}
double parsedDouble;
Double.TryParse (number, NumberStyles.Any, CultureInfo.InvariantCulture, out parsedDouble);
return parsedDouble;
}
void EatWhitespace ()
{
while (WHITE_SPACE.IndexOf(PeekChar) != -1) {
json.Read ();
if (json.Peek () == -1) {
break;
}
}
}
char PeekChar {
get {
return Convert.ToChar (json.Peek ());
}
}
char NextChar {
get {
return Convert.ToChar (json.Read ());
}
}
string NextWord {
get {
StringBuilder word = new StringBuilder ();
while (WORD_BREAK.IndexOf(PeekChar) == -1) {
word.Append (NextChar);
if (json.Peek () == -1) {
break;
}
}
return word.ToString ();
}
}
TOKEN NextToken {
get {
EatWhitespace ();
if (json.Peek () == -1) {
return TOKEN.NONE;
}
char c = PeekChar;
switch (c) {
case '{':
return TOKEN.CURLY_OPEN;
case '}':
json.Read ();
return TOKEN.CURLY_CLOSE;
case '[':
return TOKEN.SQUARED_OPEN;
case ']':
json.Read ();
return TOKEN.SQUARED_CLOSE;
case ',':
json.Read ();
return TOKEN.COMMA;
case '"':
return TOKEN.STRING;
case ':':
return TOKEN.COLON;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '-':
return TOKEN.NUMBER;
}
string word = NextWord;
switch (word) {
case "false":
return TOKEN.FALSE;
case "true":
return TOKEN.TRUE;
case "null":
return TOKEN.NULL;
}
return TOKEN.NONE;
}
}
}
/// <summary>
/// Converts a IDictionary / IList object or a simple type (string, int, etc.) into a JSON string
/// </summary>
/// <param name="json">A Dictionary&lt;string, object&gt; / List&lt;object&gt;</param>
/// <returns>A JSON encoded string, or null if object 'json' is not serializable</returns>
public static string Serialize (object obj)
{
return Serializer.Serialize (obj);
}
sealed class Serializer
{
StringBuilder builder;
Serializer ()
{
builder = new StringBuilder ();
}
public static string Serialize (object obj)
{
var instance = new Serializer ();
instance.SerializeValue (obj);
return instance.builder.ToString ();
}
void SerializeValue (object value)
{
IList asList;
IDictionary asDict;
string asStr;
if (value == null) {
builder.Append ("null");
} else if ((asStr = value as string) != null) {
SerializeString (asStr);
} else if (value is bool) {
builder.Append (value.ToString ().ToLower ());
} else if ((asList = value as IList) != null) {
SerializeArray (asList);
} else if ((asDict = value as IDictionary) != null) {
SerializeObject (asDict);
} else if (value is char) {
SerializeString (value.ToString ());
} else {
SerializeOther (value);
}
}
void SerializeObject (IDictionary obj)
{
bool first = true;
builder.Append ('{');
foreach (object e in obj.Keys) {
if (!first) {
builder.Append (',');
}
SerializeString (e.ToString ());
builder.Append (':');
SerializeValue (obj [e]);
first = false;
}
builder.Append ('}');
}
void SerializeArray (IList anArray)
{
builder.Append ('[');
bool first = true;
foreach (object obj in anArray) {
if (!first) {
builder.Append (',');
}
SerializeValue (obj);
first = false;
}
builder.Append (']');
}
void SerializeString (string str)
{
builder.Append ('\"');
char[] charArray = str.ToCharArray ();
foreach (var c in charArray) {
switch (c) {
case '"':
builder.Append ("\\\"");
break;
case '\\':
builder.Append ("\\\\");
break;
case '\b':
builder.Append ("\\b");
break;
case '\f':
builder.Append ("\\f");
break;
case '\n':
builder.Append ("\\n");
break;
case '\r':
builder.Append ("\\r");
break;
case '\t':
builder.Append ("\\t");
break;
default:
int codepoint = Convert.ToInt32 (c);
if ((codepoint >= 32) && (codepoint <= 126)) {
builder.Append (c);
} else {
builder.Append ("\\u" + Convert.ToString (codepoint, 16).PadLeft (4, '0'));
}
break;
}
}
builder.Append ('\"');
}
void SerializeOther (object value)
{
if (value is float
|| value is int
|| value is uint
|| value is long
|| value is double
|| value is sbyte
|| value is byte
|| value is short
|| value is ushort
|| value is ulong
|| value is decimal) {
builder.Append (value.ToString ());
} else {
SerializeString (value.ToString ());
}
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6704b25b621ab47ebbfa013ced92bdb0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
using System.IO;
using UnityEngine;
public class IronSourceMediationSettings : ScriptableObject
{
public static readonly string IRONSOURCE_SETTINGS_ASSET_PATH = Path.Combine(IronSourceConstants.IRONSOURCE_RESOURCES_PATH, IronSourceConstants.IRONSOURCE_MEDIATION_SETTING_NAME + ".asset");
[Header("Ironsource AppKey")]
[Tooltip("Add your application AppKeys, as provided in Ironsource Platform")]
public string AndroidAppKey = string.Empty;
[Tooltip("Add your application AppKeys, as provided in Ironsource Platform")]
public string IOSAppKey = string.Empty;
[Header("Automatic Initialization")]
[Tooltip("Use this flag when you wish to initialize all ad units (recommended)")]
public bool EnableIronsourceSDKInitAPI;
[Header("Ironsource SKAdNetwork ID")]
[Tooltip("Add Ironsource SKAdNetworkIdentifier to your Info.plist for iOS 14+")]
public bool AddIronsourceSkadnetworkID;
[Header("Project Features")]
public bool EnableAdapterDebug;
public bool EnableIntegrationHelper;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d5a679b8640d04834b4f09b8c6adec7a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,37 @@
using System;
public class IronSourcePlacement
{
private string rewardName;
private int rewardAmount;
private string placementName;
public IronSourcePlacement (string placementName, string rewardName, int rewardAmount)
{
this.placementName = placementName;
this.rewardName = rewardName;
this.rewardAmount = rewardAmount;
}
public string getRewardName ()
{
return rewardName;
}
public int getRewardAmount ()
{
return rewardAmount;
}
public string getPlacementName ()
{
return placementName;
}
public override string ToString ()
{
return placementName + " : " + rewardName + " : " + rewardAmount;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 984e6a9b75cea4626baa9dcb08114ebf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,66 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class IronSourceSegment
{
public int age;
public string gender = null;
public int level;
public int isPaying;
public long userCreationDate;
public double iapt;
public string segmentName = null;
public Dictionary<string,string> customs;
public IronSourceSegment ()
{
customs = new Dictionary<string,string> ();
age = -1;
level = -1;
isPaying = -1;
userCreationDate = -1;
iapt = 0;
}
public void setCustom(string key, string value){
customs.Add (key, value);
}
public Dictionary<string,string> getSegmentAsDict ()
{
Dictionary<string,string> temp = new Dictionary<string,string> ();
if (age != -1)
temp.Add ("age", age + "");
if (!string.IsNullOrEmpty(gender))
temp.Add ("gender", gender);
if (level != -1)
temp.Add ("level", level + "");
if (isPaying > -1 && isPaying < 2)
temp.Add ("isPaying", isPaying + "");
if (userCreationDate != -1)
temp.Add ("userCreationDate", userCreationDate + "");
if (!string.IsNullOrEmpty(segmentName))
temp.Add ("segmentName", segmentName);
if (iapt > 0)
temp.Add ("iapt", iapt + "");
Dictionary<string,string> result = temp.Concat (customs).GroupBy (d => d.Key).ToDictionary (d => d.Key, d => d.First ().Value);
return result;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f060327917ac94f60857545bd54c308e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,59 @@
using System;
using System.Collections;
using System.Collections.Generic;
public class IronSourceUtils
{
private const string ERROR_CODE = "error_code";
private const string ERROR_DESCRIPTION = "error_description";
private const string INSTANCE_ID_KEY = "instanceId";
private const string PLACEMENT_KEY = "placement";
public static IronSourceError getErrorFromErrorObject(object descriptionObject)
{
Dictionary<string, object> error = null;
if (descriptionObject is IDictionary)
{
error = descriptionObject as Dictionary<string, object>;
}
else if (descriptionObject is String && !String.IsNullOrEmpty(descriptionObject.ToString()))
{
error = IronSourceJSON.Json.Deserialize(descriptionObject.ToString()) as Dictionary<string, object>;
}
IronSourceError sse = new IronSourceError(-1, "");
if (error != null && error.Count > 0)
{
int eCode = Convert.ToInt32(error[ERROR_CODE].ToString());
string eDescription = error[ERROR_DESCRIPTION].ToString();
sse = new IronSourceError(eCode, eDescription);
}
return sse;
}
public static IronSourcePlacement getPlacementFromObject(object placementObject)
{
Dictionary<string, object> placementJSON = null;
if (placementObject is IDictionary)
{
placementJSON = placementObject as Dictionary<string, object>;
}
else if (placementObject is String)
{
placementJSON = IronSourceJSON.Json.Deserialize(placementObject.ToString()) as Dictionary<string, object>;
}
IronSourcePlacement ssp = null;
if (placementJSON != null && placementJSON.Count > 0)
{
int rewardAmount = Convert.ToInt32(placementJSON["placement_reward_amount"].ToString());
string rewardName = placementJSON["placement_reward_name"].ToString();
string placementName = placementJSON["placement_name"].ToString();
ssp = new IronSourcePlacement(placementName, rewardName, rewardAmount);
}
return ssp;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bba6a563b7b0746aea78a1ea9fea14fe
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,287 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class UnsupportedPlatformAgent : IronSourceIAgent
{
public UnsupportedPlatformAgent ()
{
Debug.Log ("Unsupported Platform");
}
#region IronSourceAgent implementation
public void start ()
{
Debug.Log ("Unsupported Platform");
}
//******************* Base API *******************//
public void onApplicationPause (bool pause)
{
Debug.Log ("Unsupported Platform");
}
public void setMediationSegment (string segment)
{
Debug.Log ("Unsupported Platform");
}
public string getAdvertiserId ()
{
Debug.Log ("Unsupported Platform");
return "";
}
public void validateIntegration ()
{
Debug.Log ("Unsupported Platform");
}
public void shouldTrackNetworkState (bool track)
{
Debug.Log ("Unsupported Platform");
}
public bool setDynamicUserId (string dynamicUserId)
{
Debug.Log ("Unsupported Platform");
return false;
}
public void setAdaptersDebug(bool enabled)
{
Debug.Log ("Unsupported Platform");
}
public void setMetaData(string key, string value)
{
Debug.Log("Unsupported Platform");
}
public void setMetaData(string key, params string[] values)
{
Debug.Log("Unsupported Platform");
}
public int? getConversionValue()
{
Debug.Log("Unsupported Platform");
return null;
}
//******************* SDK Init *******************//
public void setUserId (string userId)
{
Debug.Log ("Unsupported Platform");
}
public void init (string appKey)
{
Debug.Log ("Unsupported Platform");
}
public void init (string appKey, params string[] adUnits)
{
Debug.Log ("Unsupported Platform");
}
public void initISDemandOnly (string appKey, params string[] adUnits)
{
Debug.Log ("Unsupported Platform");
}
//******************* RewardedVideo API *******************//
public void showRewardedVideo ()
{
Debug.Log ("Unsupported Platform");
}
public void showRewardedVideo (string placementName)
{
Debug.Log ("Unsupported Platform");
}
public bool isRewardedVideoAvailable ()
{
Debug.Log ("Unsupported Platform");
return false;
}
public bool isRewardedVideoPlacementCapped (string placementName)
{
Debug.Log ("Unsupported Platform");
return true;
}
public IronSourcePlacement getPlacementInfo (string placementName)
{
Debug.Log ("Unsupported Platform");
return null;
}
public void setRewardedVideoServerParams(Dictionary<string, string> parameters)
{
Debug.Log ("Unsupported Platform");
}
public void clearRewardedVideoServerParams()
{
Debug.Log ("Unsupported Platform");
}
//******************* RewardedVideo DemandOnly API *******************//
public void showISDemandOnlyRewardedVideo (string instanceId)
{
Debug.Log ("Unsupported Platform");
}
public void loadISDemandOnlyRewardedVideo (string instanceId)
{
Debug.Log ("Unsupported Platform");
}
public bool isISDemandOnlyRewardedVideoAvailable (string instanceId)
{
Debug.Log ("Unsupported Platform");
return false;
}
//******************* Interstitial API *******************//
public void loadInterstitial ()
{
Debug.Log ("Unsupported Platform");
}
public void showInterstitial ()
{
Debug.Log ("Unsupported Platform");
}
public void showInterstitial (string placementName)
{
Debug.Log ("Unsupported Platform");
}
public bool isInterstitialReady ()
{
Debug.Log ("Unsupported Platform");
return false;
}
public bool isInterstitialPlacementCapped (string placementName)
{
Debug.Log ("Unsupported Platform");
return true;
}
//******************* Interstitial DemandOnly API *******************//
public void loadISDemandOnlyInterstitial (string instanceId)
{
Debug.Log ("Unsupported Platform");
}
public void showISDemandOnlyInterstitial (string instanceId)
{
Debug.Log ("Unsupported Platform");
}
public bool isISDemandOnlyInterstitialReady (string instanceId)
{
Debug.Log ("Unsupported Platform");
return false;
}
//******************* Offerwall API *******************//
public void showOfferwall ()
{
Debug.Log ("Unsupported Platform");
}
public void showOfferwall (string placementName)
{
Debug.Log ("Unsupported Platform");
}
public void getOfferwallCredits ()
{
Debug.Log ("Unsupported Platform");
}
public bool isOfferwallAvailable ()
{
Debug.Log ("Unsupported Platform");
return false;
}
//******************* Banner API *******************//
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position)
{
Debug.Log ("Unsupported Platform");
}
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName)
{
Debug.Log ("Unsupported Platform");
}
public void destroyBanner()
{
Debug.Log ("Unsupported Platform");
}
public void displayBanner()
{
Debug.Log ("Unsupported Platform");
}
public void hideBanner()
{
Debug.Log ("Unsupported Platform");
}
public bool isBannerPlacementCapped(string placementName)
{
Debug.Log ("Unsupported Platform");
return false;
}
public void setSegment(IronSourceSegment segment){
Debug.Log ("Unsupported Platform");
}
public void setConsent(bool consent)
{
Debug.Log ("Unsupported Platform");
}
//******************* ConsentView API *******************//
public void loadConsentViewWithType(string consentViewType)
{
Debug.Log("Unsupported Platform");
}
public void showConsentViewWithType(string consentViewType)
{
Debug.Log("Unsupported Platform");
}
//******************* ILRD API *******************//
public void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData)
{
Debug.Log("Unsupported Platform");
}
#endregion
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fa7a1bdde72c745a48f5ab116d847d96
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,455 @@
#if UNITY_IPHONE || UNITY_IOS
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
using System;
using System.Globalization;
public class iOSAgent : IronSourceIAgent
{
[DllImport("__Internal")]
private static extern void CFSetPluginData (string pluginType, string pluginVersion, string pluginFrameworkVersion);
[DllImport("__Internal")]
private static extern void CFSetMediationSegment (string segment);
[DllImport("__Internal")]
private static extern string CFGetAdvertiserId ();
[DllImport("__Internal")]
private static extern void CFValidateIntegration ();
[DllImport("__Internal")]
private static extern void CFShouldTrackNetworkState (bool track);
[DllImport("__Internal")]
private static extern bool CFSetDynamicUserId (string dynamicUserId);
[DllImport("__Internal")]
private static extern void CFSetAdaptersDebug (bool enabled);
[DllImport("__Internal")]
private static extern void CFSetMetaData (string key, string value);
[DllImport("__Internal")]
private static extern void CFSetMetaDataWithValues (string key, params string[] values);
[DllImport("__Internal")]
private static extern string CFGetConversionValue();
//******************* SDK Init *******************//
[DllImport("__Internal")]
private static extern void CFSetUserId (string userId);
[DllImport("__Internal")]
private static extern void CFInit (string appKey);
[DllImport("__Internal")]
private static extern void CFInitWithAdUnits (string appKey, params string[] adUnits);
[DllImport("__Internal")]
private static extern void CFInitISDemandOnly (string appKey, params string[] adUnits);
//******************* RewardedVideo API *******************//
[DllImport("__Internal")]
private static extern void CFShowRewardedVideo ();
[DllImport("__Internal")]
private static extern void CFShowRewardedVideoWithPlacementName (string placementName);
[DllImport("__Internal")]
private static extern bool CFIsRewardedVideoAvailable ();
[DllImport("__Internal")]
private static extern bool CFIsRewardedVideoPlacementCapped (string placementName);
[DllImport("__Internal")]
private static extern string CFGetPlacementInfo (string placementName);
[DllImport("__Internal")]
private static extern void CFSetRewardedVideoServerParameters (string jsonString);
[DllImport("__Internal")]
private static extern void CFClearRewardedVideoServerParameters ();
//******************* RewardedVideo DemandOnly API *******************//
[DllImport("__Internal")]
private static extern void CFShowISDemandOnlyRewardedVideo (string instanceId);
[DllImport("__Internal")]
private static extern void CFLoadISDemandOnlyRewardedVideo (string instanceId);
[DllImport("__Internal")]
private static extern bool CFIsDemandOnlyRewardedVideoAvailable (string instanceId);
//******************* Interstitial API *******************//
[DllImport("__Internal")]
private static extern void CFLoadInterstitial ();
[DllImport("__Internal")]
private static extern void CFShowInterstitial ();
[DllImport("__Internal")]
private static extern void CFShowInterstitialWithPlacementName (string placementName);
[DllImport("__Internal")]
private static extern bool CFIsInterstitialReady ();
[DllImport("__Internal")]
private static extern bool CFIsInterstitialPlacementCapped (string placementName);
//******************* Interstitial DemandOnly API *******************//
[DllImport("__Internal")]
private static extern void CFLoadISDemandOnlyInterstitial (string instanceId);
[DllImport("__Internal")]
private static extern void CFShowISDemandOnlyInterstitial(string instanceId);
[DllImport("__Internal")]
private static extern bool CFIsDemandOnlyInterstitialReady (string instanceId);
//******************* Offerwall API *******************//
[DllImport("__Internal")]
private static extern void CFShowOfferwall ();
[DllImport("__Internal")]
private static extern void CFShowOfferwallWithPlacementName (string placementName);
[DllImport("__Internal")]
private static extern void CFGetOfferwallCredits ();
[DllImport("__Internal")]
private static extern bool CFIsOfferwallAvailable ();
//******************* Banner API *******************//
[DllImport("__Internal")]
private static extern void CFLoadBanner (string description, int width, int height, int position, string placementName);
[DllImport("__Internal")]
private static extern void CFDestroyBanner ();
[DllImport("__Internal")]
private static extern void CFDisplayBanner ();
[DllImport("__Internal")]
private static extern void CFHideBanner ();
[DllImport("__Internal")]
private static extern bool CFIsBannerPlacementCapped (string placementName);
[DllImport("__Internal")]
private static extern void CFSetSegment(string json);
[DllImport("__Internal")]
private static extern void CFSetConsent(bool consent);
//******************* ConsentView API *******************//
[DllImport("__Internal")]
private static extern void CFLoadConsentViewWithType(string consentViewType);
[DllImport("__Internal")]
private static extern void CFShowConsentViewWithType(string consentViewType);
//******************* ILRD API *******************//
[DllImport("__Internal")]
private static extern void CFSetAdRevenueData(string dataSource, string impressionData);
public iOSAgent ()
{
}
#region IronSourceIAgent implementation
//******************* Base API *******************//
public void onApplicationPause (bool pause)
{
}
public void setMediationSegment (string segment)
{
CFSetMediationSegment (segment);
}
public string getAdvertiserId ()
{
return CFGetAdvertiserId ();
}
public void validateIntegration ()
{
CFValidateIntegration ();
}
public void shouldTrackNetworkState (bool track)
{
CFShouldTrackNetworkState (track);
}
public bool setDynamicUserId (string dynamicUserId)
{
return CFSetDynamicUserId (dynamicUserId);
}
public void setAdaptersDebug(bool enabled)
{
CFSetAdaptersDebug (enabled);
}
public void setMetaData(string key, params string[] values)
{
CFSetMetaDataWithValues(key, values);
}
public void setMetaData(string key, string value)
{
CFSetMetaData(key, value);
}
public int? getConversionValue()
{
CultureInfo invCulture = CultureInfo.InvariantCulture;
int parsedInt;
if(int.TryParse(string.Format(invCulture, "{0}", CFGetConversionValue()), NumberStyles.Any, invCulture, out parsedInt))
{
return parsedInt;
}
return null;
}
//******************* SDK Init *******************//
public void setUserId (string userId)
{
CFSetUserId (userId);
}
public void init (string appKey)
{
CFSetPluginData ("Unity", IronSource.pluginVersion(), IronSource.unityVersion());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
CFInit (appKey);
}
public void init (string appKey, params string[] adUnits)
{
CFSetPluginData ("Unity", IronSource.pluginVersion(), IronSource.unityVersion());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
CFInitWithAdUnits (appKey, adUnits);
}
public void initISDemandOnly (string appKey, params string[] adUnits)
{
CFSetPluginData ("Unity", IronSource.pluginVersion(), IronSource.unityVersion());
Debug.Log ("IntegrationHelper pluginVersion: " + IronSource.pluginVersion ());
CFInitISDemandOnly (appKey, adUnits);
}
//******************* RewardedVideo API *******************//
public void showRewardedVideo ()
{
CFShowRewardedVideo ();
}
public void showRewardedVideo (string placementName)
{
CFShowRewardedVideoWithPlacementName (placementName);
}
public bool isRewardedVideoAvailable ()
{
return CFIsRewardedVideoAvailable ();
}
public bool isRewardedVideoPlacementCapped (string placementName)
{
return CFIsRewardedVideoPlacementCapped (placementName);
}
public IronSourcePlacement getPlacementInfo (string placementName)
{
IronSourcePlacement sp = null;
string spString = CFGetPlacementInfo (placementName);
if (spString != null) {
Dictionary<string,object> spDic = IronSourceJSON.Json.Deserialize (spString) as Dictionary<string,object>;
string pName = spDic ["placement_name"].ToString ();
string rewardName = spDic ["reward_name"].ToString ();
int rewardAmount = Convert.ToInt32 (spDic ["reward_amount"].ToString ());
sp = new IronSourcePlacement (pName, rewardName, rewardAmount);
}
return sp;
}
public void setRewardedVideoServerParams(Dictionary<string, string> parameters){
string json = IronSourceJSON.Json.Serialize (parameters);
CFSetRewardedVideoServerParameters (json);
}
public void clearRewardedVideoServerParams(){
CFClearRewardedVideoServerParameters ();
}
//******************* RewardedVideo DemandOnly API *******************//
public void showISDemandOnlyRewardedVideo (string instanceId)
{
CFShowISDemandOnlyRewardedVideo(instanceId);
}
public void loadISDemandOnlyRewardedVideo (string instanceId)
{
CFLoadISDemandOnlyRewardedVideo(instanceId);
}
public bool isISDemandOnlyRewardedVideoAvailable (string instanceId)
{
return CFIsDemandOnlyRewardedVideoAvailable(instanceId);
}
//******************* Interstitial API *******************//
public void loadInterstitial ()
{
CFLoadInterstitial ();
}
public void showInterstitial ()
{
CFShowInterstitial ();
}
public void showInterstitial (string placementName)
{
CFShowInterstitialWithPlacementName (placementName);
}
public bool isInterstitialReady ()
{
return CFIsInterstitialReady ();
}
public bool isInterstitialPlacementCapped (string placementName)
{
return CFIsInterstitialPlacementCapped (placementName);
}
//******************* Interstitial DemandOnly API *******************//
public void loadISDemandOnlyInterstitial (string instanceId)
{
CFLoadISDemandOnlyInterstitial (instanceId);
}
public void showISDemandOnlyInterstitial (string instanceId)
{
CFShowISDemandOnlyInterstitial(instanceId);
}
public bool isISDemandOnlyInterstitialReady (string instanceId)
{
return CFIsDemandOnlyInterstitialReady (instanceId);
}
//******************* Offerwall API *******************//
public void showOfferwall ()
{
CFShowOfferwall ();
}
public void showOfferwall (string placementName)
{
CFShowOfferwallWithPlacementName (placementName);
}
public void getOfferwallCredits ()
{
CFGetOfferwallCredits ();
}
public bool isOfferwallAvailable ()
{
return CFIsOfferwallAvailable ();
}
//******************* Banner API *******************//
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position)
{
loadBanner(size, position, "");
}
public void loadBanner (IronSourceBannerSize size, IronSourceBannerPosition position, string placementName)
{
CFLoadBanner (size.Description, (int)size.Width, (int)size.Height, (int)position, placementName);
}
public void destroyBanner ()
{
CFDestroyBanner ();
}
public void displayBanner ()
{
CFDisplayBanner ();
}
public void hideBanner ()
{
CFHideBanner ();
}
public bool isBannerPlacementCapped (string placementName)
{
return CFIsBannerPlacementCapped (placementName);
}
public void setSegment(IronSourceSegment segment){
Dictionary <string,string> dict = segment.getSegmentAsDict ();
string json = IronSourceJSON.Json.Serialize (dict);
CFSetSegment (json);
}
public void setConsent(bool consent)
{
CFSetConsent(consent);
}
public void loadConsentViewWithType(string consentViewType)
{
CFLoadConsentViewWithType(consentViewType);
}
public void showConsentViewWithType(string consentViewType)
{
CFShowConsentViewWithType(consentViewType);
}
//******************* ILRD API *******************//
public void setAdRevenueData(string dataSource, Dictionary<string, string> impressionData)
{
string json = IronSourceJSON.Json.Serialize (impressionData);
CFSetAdRevenueData(dataSource, json);
}
#endregion
}
#endif

Some files were not shown because too many files have changed in this diff Show More