Coder Social home page Coder Social logo

appodeal / react-native-appodeal Goto Github PK

View Code? Open in Web Editor NEW
59.0 10.0 37.0 17.65 MB

Official React Native package that adds Appodeal SDK support to your react-native application.

Home Page: https://appodeal.com

Java 35.25% JavaScript 0.69% Objective-C 26.90% Ruby 2.89% Starlark 1.38% TypeScript 32.83% Swift 0.07%
appodeal advertising react-native ios android

react-native-appodeal's Introduction

react-native-appodeal

React Native package that adds Appodeal SDK support to your react-native application.

Table of Contents

Installation

Run following commands in project root directory

$ npm install react-native-appodeal --save

There are beta versions of Appodeal SDK available on the React Native. To install beta version of the plugin please add a tag @beta to the installation command:

$ npm install react-native-appodeal@beta --save

If you are using React Native version lower than 0.60 run following command:

$ react-native link react-native-appodeal

iOS

  1. Go to ios/ folder and open Podfile
  2. Add Appodeal adapters. Add pods into ./ios/Podfile:
target 'App' do
    config = use_native_modules!

    use_react_native!(
        :path => config[:reactNativePath],
        :hermes_enabled => false
    )

    pod 'APDAdColonyAdapter'
    pod 'BDMAdColonyAdapter'
    pod 'APDAdjustAdapter'
    pod 'APDAppLovinAdapter'
    pod 'APDAppsFlyerAdapter'
    pod 'APDBidMachineAdapter'
    pod 'BDMCriteoAdapter'
    pod 'BDMPangleAdapter'
    pod 'BDMAmazonAdapter'
    pod 'BDMSmaatoAdapter'
    pod 'BDMTapjoyAdapter'
    pod 'APDFirebaseAdapter'
    pod 'APDGoogleAdMobAdapter'
    pod 'APDIABAdapter'
    pod 'BDMIABAdapter'
    pod 'APDIronSourceAdapter'
    pod 'APDFacebookAdapter'
    pod 'APDMetaAudienceNetworkAdapter'
    pod 'BDMMetaAudienceAdapter'
    pod 'APDMyTargetAdapter'
    pod 'BDMMyTargetAdapter'
    pod 'APDStackAnalyticsAdapter'
    pod 'APDUnityAdapter'
    pod 'APDVungleAdapter'
    pod 'BDMVungleAdapter'
    pod 'APDYandexAdapter'

    target 'AppTests' do
        inherit! :complete
    end

    use_native_modules!
    use_frameworks!
end

You can change following implementation to use custom mediation setup. See docs.

Note. Appodeal requires to use use_frameworks! . You need to remove Flipper dependency from Podfile and AppDelegate

  1. Run pod install
  2. Open .xcworkspace
  3. Configfure info.plist . Press Add+ at the end of the name App Transport Security Settings key and choose Allow Arbitrary Loads. Set its type to Boolean and its value to Yes.
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

Add GADApplicationIdentifier key (if you use Admob adapter).

<key>GADApplicationIdentifier</key>
<string>YOUR_ADMOB_APP_ID</string>

For more information about Admob sync check out our FAQ.

Add FacebookAppID, FacebookClientToken and other parameters according to doc (if you use Meta Analytics adapter)

<key>CFBundleURLTypes</key>
<array>
  <dict>
  <key>CFBundleURLSchemes</key>
  <array>
    <string>fbAPP-ID</string>
  </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>APP-ID</string>
<key>FacebookClientToken</key>
<string>CLIENT-TOKEN</string>
<key>FacebookDisplayName</key>
<string>APP-NAME</string>

Add GoogleService-Info.plist according to doc (if you use Firebase adapter)

  1. Run your project ( Cmd+R )

Android

  1. Add Appodeal adapters.

Add dependencies into build.gradle (module: app)

dependencies {
    ...
    implementation 'com.appodeal.ads:sdk:3.2.1.+'
    ...
}

Add repository into build.gradle (module: project)

allprojects {
    repositories {
        ...
        jcenter()
        maven { url "https://artifactory.appodeal.com/appodeal" }
        ...
    }
}

Note. You can change following implementation to use custom mediation setup. See Docs

  1. Enable multidex

In build.gradle (module: app)

defaultConfig {
    ...
    multiDexEnabled true
    ...
}
...
dependencies {
    ...
    implementation 'com.android.support:multidex:1.0.3'
    ...
}
  1. Set all required permissions in AndroidManifest.xml. See Docs
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
  1. Network security configuration

Add the Network Security Configuration file to your AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application 
		...
        android:networkSecurityConfig="@xml/network_security_config">
    </application>
</manifest>

In your network_security_config.xml file, add base-config that sets cleartextTrafficPermitted to true :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">127.0.0.1</domain>
    </domain-config>
</network-security-config>
  1. Admob Configuration (if you use Admob adapter)
<manifest>
    <application>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="[ADMOB_APP_ID]"/>
    </application>
</manifest>

For more information about Admob sync check out our FAQ.

  1. Meta configuration (if you use Meta Analytics adapter)
<manifest>
    <application>
       <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="[META_APP_ID]" />
        <meta-data
            android:name="com.facebook.sdk.ClientToken"
            android:value="META_CLIENT_TOKEN" />
    </application>
</manifest>
  1. Add google-services.json according to doc (if you use Firebase adapter)

Usage

Please, read iOS and Android docs at wiki to get deeper understanding how Appodeal SDK works.

Initialisation

  1. Initialise Appodeal at the application launch.
import {
    Appodeal,
    AppodealAdType
} from 'react-native-appodeal';

const adTypes = AppodealAdType.INTERSTITIAL | AppodealAdType.REWARDED_VIDEO | AppodealAdType.BANNER;
Appodeal.initialize('Your app key', adTypes)
  1. Configure SDK
  • General configuration
import {
    Appodeal,
    AppodealAdType,
    AppodealLogLevel,
} from 'react-native-appodeal';
// Set ad auto caching enabled or disabled
// By default autocache is enabled for all ad types
// Call this method before or after initilisation
Appodeal.setAutoCache(AppodealAdType.INTERSTITIAL, false);
// Set testing mode
// Call this method before initilisation
Appodeal.setTesting(bool);
// Set Appodeal SDK logging level
// Call this method before initilisation
Appodeal.setLogLevel(AppodealLogLevel.DEBUG);
// Enable or disable child direct threatment
// Call this method before initilisation
Appodeal.setChildDirectedTreatment(false);
// Disable network for specific ad type:
// Call this method before initilisation
Appodeal.disableNetwork("some_network ", AppodealAdType.INTERSTITIAL);
// Enable or disable triggering show for precache ads
// Call this method before or after initilisation
Appodeal.setTriggerPrecacheCallbacks(true, AppodealAdType.BANNER);
  • Segments and targeting.
import {
    Appodeal,
    AppodealGender
} from 'react-native-appodeal';
// Set specific user id from attribution system
// Call this method before initilisation
Appodeal.setUserId('some user ud')
// Set user age
// Call this method before or after initilisation
Appodeal.setCustomStateValue(25, 'appodeal_user_age');
// Set user gender
// Supported values are male | female
// Call this method before of after initilisation
Appodeal.setCustomStateValue(AppodealGender.FEMALE, 'appodeal_user_gender');

// Set segment filter
// Call this method before of after initilisation
Appodeal.setCustomStateValue(levelsPlayed, 'levels_played');
Appodeal.setCustomStateValue(10, 'user_rank');
Appodeal.setCustomStateValue(false, 'paid');
// Set extras
Appodeal.setExtrasValue("some value", 'attribuition_id');
  • Banner specific
import {
    Appodeal
} from 'react-native-appodeal';
// Enable or disable tablet banners.
// Call this method before of after initilisation
Appodeal.setTabletBanners(false);
// Enable or disable smart banners.
// iOS smart banners are supported only 
// for applications where autoration is disabled
// Call this method before of after initilisation
Appodeal.setSmartBanners(false);
// Enable or disable banner refresh animation
// Call this method before of after initilisation
Appodeal.setBannerAnimation(true);

Callbacks

Set callbacks listener to get track of ad lifecycle events.

  1. SDK

Initialization callback. Fired when SDK is fully initialized

import {
    Appodeal,
    AppodealSdkEvent
} from 'react-native-appodeal';

Appodeal.addEventListener(AppodealSdkEvent.INITIALIZED, () =>
    console.log("Appodeal SDK did initialize");
);

Ad revenue callback. Fired when SDK is shown ad impression and register revenue

Appodeal.addEventListener(
    AppodealSdkEvent.AD_REVENUE,
    (revenue: AppodealAdRevenue) => {
        console.log('Appodeal SDK did receive ad revenue: ', revenue);
    },
);

where ad revenue is object that contains:

Property Type Desctiption
networkName string Name of Ad Network
adUnitName string Name of Appodeal Ad Unit
placement string Name of impression placement
revenuePrecision string Revenue precision
demandSource string Demand Source name. Bidder name in case of impression from real time bidding or name of ad network
currency string Revenue currency. USD
revenue number Revenue amount
adType AppodealAdType Impression ad type
  1. Banner
import {
    Appodeal,
    AppodealBannerEvent
} from 'react-native-appodeal';

Appodeal.addEventListener(AppodealBannerEvent.LOADED, (event: any) =>
    console.log("Banner loaded. Height: ", event.height + ", precache: " + event.isPrecache)
);
Appodeal.addEventListener(AppodealBannerEvent.SHOWN, () =>
    console.log("Banner shown")
);
Appodeal.addEventListener(AppodealBannerEvent.EXPIRED, () =>
    console.log("Banner expired")
);
Appodeal.addEventListener(AppodealBannerEvent.CLICKED, () =>
    console.log("Banner was clicked")
);
Appodeal.addEventListener(AppodealBannerEvent.FAILED_TO_LOAD, () =>
    console.log("Banner failed to load")
);
  1. Interstitial
import {
    Appodeal,
    AppodealInterstitialEvent
} from 'react-native-appodeal';

Appodeal.addEventListener(AppodealInterstitialEvent.LOADED, (event: any) =>
    console.log("Interstitial loaded. Precache: ", event.isPrecache)
);
Appodeal.addEventListener(AppodealInterstitialEvent.SHOWN, () => 
    console.log("Interstitial shown")
);
Appodeal.addEventListener(AppodealInterstitialEvent.EXPIRED, () =>
    console.log("Interstitial expired")
);
Appodeal.addEventListener(AppodealInterstitialEvent.CLICKED, () =>
    console.log("Interstitial was clicked")
);
Appodeal.addEventListener(AppodealInterstitialEvent.CLOSED, () =>
    console.log("Interstitial closed")
);
Appodeal.addEventListener(AppodealInterstitialEvent.FAILED_TO_LOAD, () =>
    console.log("Interstitial failed to load")
);
Appodeal.addEventListener(AppodealInterstitialEvent.FAILED_TO_SHOW, () =>
    console.log("Interstitial failed to show")
);
  1. Rewarded video
import {
    Appodeal,
    AppodealRewardedEvent
} from 'react-native-appodeal';

Appodeal.addEventListener(AppodealRewardedEvent.LOADED, (event: any) =>
    console.log("Rewarded video loaded. Precache: ", event.isPrecache)
);
Appodeal.addEventListener(AppodealRewardedEvent.SHOWN, () =>
    console.log("Rewarded video shown")
);
Appodeal.addEventListener(AppodealRewardedEvent.EXPIRED, () =>
    console.log("Rewarded video expired")
);
Appodeal.addEventListener(AppodealRewardedEvent.CLICKED, () => 
    console.log("Rewarded video was clicked")
);
Appodeal.addEventListener(AppodealRewardedEvent.REWARD, (event: any) =>
    console.log("Rewarded video finished. Amount: ", event.amount + ", currency: " + event.currency)
);
Appodeal.addEventListener(AppodealRewardedEvent.CLOSED, (event: any) =>
    console.log("Rewarded video closed, is finished: ", event.isFinished)
);
Appodeal.addEventListener(AppodealRewardedEvent.FAILED_TO_LOAD, () =>
    console.log("Rewarded video failed to load")
);
Appodeal.addEventListener(AppodealRewardedEvent.FAILED_TO_SHOW, () =>
    console.log("Rewarded video failed to show")
);

Presentation

Note. All presentation specific methods are available only after SDK initialisation

  1. Caching

If you disable autocache you should call cache method before trying to show any ad

Appodeal.cache(AppodealAdType.INTERSTITIAL)
  1. Check that ad is loaded and can be shown
// Check that interstitial 
const canShow = Appodeal.canShow(AppodealAdType.INTERSTITIAL, 'your_placement');
console.log("Interstitial ", canShow ? "can be shown" : "can not be shown");
// Check that banner is loaded 
const isLoaded = Appodeal.isLoaded(AppodealAdType.BANNER);
console.log("Banner ", isLoaded ? "is loaded" : "is not loaded");
  1. Show advertising
// Show banner at the top of screen
Appodeal.show(AppodealAdType.BANNER_TOP)
// Show interstitial for specific pacement
Appodeal.show(AppodealAdType.INTERSTITIAL, 'your_placement')
  1. Hide

You can hide banner ad after it was shown. Call hide method with another ad types won't affect anything

Appodeal.hide(AppodealAdType.BANNER_TOP)

GDPR/CCPA

Appodeal since 3.0.0 is supports GDPR and CCPA regulations by default. It will automatically detect regulation zone and show all required consent dialog at the very first initialization moment if it is needed.

Since v3.2.2 plugin fully supports TCFv2 and Google UMP. To properly set UMP messages please read the following guide.

If you need more control of user consent in your app you can manually request consent information update, show form or revokes previously obtained user consent

import {
    Appodeal,
    AppodealConsentStatus
} from 'react-native-appodeal';

// Get current consent status
switch (Appodeal.consentStatus()) {
    case AppodealConsentStatus.UNKNOWN: 
        // The SDK did not request consent info update yet
    case AppodealConsentStatus.REQUIRED:
        // A user is under regulations and should provides a consent
    case AppodealConsentStatus.NOT_REQUIRED:
        // A user is not under regulations
    case AppodealConsentStatus.OBTAINED:
        // A user is under regulations and and already provides a consent
}

// Request consent info update promise that returns updated status
Appodeal.requestConsentInfoUpdate('Your app key')
    .then((status) => console.log(status))
    .catch((error) => console.log(error))

// Load and show consent form only if consent status is REQUIRED
Appodeal.showConsentFormIfNeeded()
    .then((status) => console.log(status))
    .catch((error) => console.log(error))

// Force load and show consent form 
Appodeal.showConsentForm()
    .then((status) => console.log(status))
    .catch((error) => console.log(error))

// Removes previously obtained consent
Appodeal.revokeConsent();

Measurment

Ad Revenue

Ad revenue tracking is available by default for Firebase, AppsFlyer and Adjust. To use it you will need to add Appodeal's Firebase, AppsFlyer or Adjust adapters accordingly.

Event Tracking

Event tracking is available for Firebase, AppsFlyer, Adjust and Meta. Add this adapters in your App and call following method:

import {
    Appodeal
} from 'react-native-appodeal';

Appodeal.trackEvent('app_event');
Appodeal.trackEvent('app_event', { 'some_key', 'some_value' });

In-App Purchase validation

In-App Purchase validation is available by AppsFlyer or Adjust MMPs. After validation purchase will track automatically. To use this you will need to one of Adjust or AppsFlyer adapters into the App, enable validation on MMP's side and call following method:

import {
    Appodeal,
    AppodealIOSPurchaseType,
    AppodealAndroidPurchaseType
} from 'react-native-appodeal';

if (Platform.OS === 'ios') {
    Appodeal.validateAndTrackInAppPurchase({
        productId: "Product ID",
        productType: AppodealIOSPurchaseType.AUTO_RENEWABLE_SUBSCRIPTION,
        price: 9.99,
        currency: "USD",
        transactionId: "Transaction ID"
    }, (result, error) => 
        console.log("Purchase validation ", result ? "successed" : "failed");
    );
} else if (Platform.OS === 'android') {
    if (Platform.OS === 'ios') {
    Appodeal.validateAndTrackInAppPurchase({
        publicKey: "Public Key",
        productType: AppodealAndroidPurchaseType.SUBSCRIPTION,
        signature: "Signature",
        purchaseData: "Purchase data",
        purchaseToken: "Token",
        timestamp: 12345678,
        developerPayload: "payload",
        price: "9.99",
        currency: "USD",
        orderId: "Order",
        sku: "SKU"
    }, (result, error) => 
        console.log("Purchase validation ", result ? "successed" : "failed");
    );
}

Banner View

AppodealBanner is a component that allows you to display ads in a banner format (know as AppodealBannerView).

Banners are available in 3 sizes:

  • phone (320x50)
  • tablet (728x90)

Appodeal Banner View can be used only after Appodeal SDK was initialized. You can show only one banner on the screen. Static banners (top or bottom) can't be used in one session with AppodealBanner.

import {
    AppodealBanner
} from 'react-native-appodeal';

<AppodealBanner
    style = {{
        height: 50,
        width: '100%',
        backgroundColor: 'hsl(0, 0%, 97%)',
        alignContent: 'stretch',
    }}
    adSize = 'phone'
    usesSmartSizing // (iOS specific) on Android smart banners are enabled by default.
/>

When banner is added on screen it starts to load ad automatically event if autocache is disabled.

Styling

Height property of banner styles should corresponds to adSize attribute. We recommend to use

adSize height
'phone' 50
'tablet' 90

Callbacks

Banner view has explicit callbacks.

<AppodealBanner
    style = {styles.banner}
    adSize = 'phone'
    usesSmartSizing // (iOS specific) on Android smart banners are enabled by default.
    onAdLoaded = {() => console.log("Banner view did load")}
    onAdExpired = {() => console.log("Banner view expired")}
    onAdClicked = {() => console.log("Banner view is clicked")}
    onAdFailedToLoad = {() => console.log("Banner view is failed to load")}
/>

MREC View

AppodealMrec is a component that allows you to display ads in a MREC (banner with size of 300x250) format (know as AppodealMrecView).

Appodeal MREC View can be used only after Appodeal SDK was initialized. You can show only one MREC on the screen.

import {
    AppodealMrec
} from 'react-native-appodeal';

<AppodealMrec
    style = {{
        backgroundColor: 'hsl(0, 0%, 97%)',
        alignContent: 'stretch',
    }}
/>

When banner is added on screen it starts to load ad automatically event if autocache is disabled.

Callbacks

MREC view has explicit callbacks.

<AppodealMrec
    style = {styles.mrec}
    onAdLoaded = {() => console.log("MREC view did load")}
    onAdExpired = {() => console.log("MREC view expired")}
    onAdClicked = {() => console.log("MREC view is clicked")}
    onAdFailedToLoad = {() => console.log("MREC view is failed to load")}
/>

Changelog

3.2.3

  • Update Appodeal to 3.2.1 (stable)

3.2.2-Beta

  • Update Appodeal 3.2.1-beta.1
  • Supports TCFv2 and Google UMP
  • Removes updateGDPRConsent
  • Removes updateCCPAConsent
  • Adds consentStatus
  • Adds requestConsentInfoUpdate
  • Adds showConsentFormIfNeeded
  • Adds showConsentForm
  • Adds revokeConsent

3.2.1

  • Update Appodeal to 3.2.0 (stable)

3.2.0-Beta

  • Update Appodeal to 3.2.0-beta.1

3.1.4

  • Switch to stable release

3.1.3-Beta

  • Update Appodeal to 3.1.3-beta.1
  • Update Banner View for Android
  • Split Mrec and Banner Views

3.0.2

  • Update Appodeal to 3.0.2

3.0.1

  • Update Appodeal to 3.0.1
  • Add ad revenue callback

3.0.0

  • Update Appodeal to 3.0.0
  • Refactor plugin API. See doc above

2.11.0

  • Update Appodeal to 2.11.0 (Stable)
  • Bump Android compileSdkVersion to 31.
  • Bump Android buildToolsVersion to 31.0.0
  • Remove methods:
Appodeal.disableLocationPermissionCheck();
Appodeal.disableWriteExternalStoragePermissionCheck();
Appodeal.requestAndroidMPermissions(params => {});

2.10.3

  • Update Appodeal to 2.10.3 (Stable)
  • Improvements of AppodealBanner behaviour

2.10.2

  • Update Appodeal to 2.10.2 (Stable)

2.10.1

  • Update Appodeal to 2.10.1 (Stable)

2.10.0-Beta

  • Update Appodeal to 2.10.0 (Beta)
  • [iOS] Fix disableNetwork method

2.9.1

  • Update Appodeal to 2.9.0 (Stable)

2.9.0

  • Update Appodeal to 2.9.0 (Beta)

2.8.2

  • Update Appodeal to 2.8.1 (Stable)

2.8.1-Beta

  • Update Appodeal to 2.8.1 (Beta)
  • [Android] Add method setSharedAdsInstanceAcrossActivities

2.7.7

  • [iOS] Fix setOnLoadedTriggerBoth method
  • [Android] Fix requestAndroidMPermissions method
  • Fix paramaters in AppodealRewardedEvent.CLOSED callback

2.7.6

  • [iOS] Update Appodeal to 2.7.5
  • [Android] Update Appodeal to 2.7.4

2.8.0-Beta

  • Update Appodeal to 2.8.0

2.7.5

  • [iOS] Add smart banners to banner view. Change pod dependency to Appodeal to 2.7.4

2.7.4

  • [iOS] Update Appodeal to 2.7.4
  • [Android] Fixes in banner view

2.7.3-Beta

  • Update Appodeal to 2.7.3-Beta

2.7.2-Beta

  • Update Appodeal to 2.7.2-Beta
  • Add deeper Consent Manager integration

2.6.5

  • Update Appodeal to 2.6.5
  • Fix iOS banner view

2.6.4

  • Update Appodeal to 2.6.4
  • Add banner view and MREC support
  • Add Consent Manager support

2.6.3

  • Update Appodeal to 2.6.3
  • Refactor plugin
  • Update dependency management

2.1.4

  • release

react-native-appodeal's People

Contributors

albermonte avatar da2gl avatar dependabot[bot] avatar dylancom avatar kanzitelli avatar marf avatar nazarkozak avatar sasweb avatar staskochkin avatar tamplier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-appodeal's Issues

event parameter values for eventlisteners are different for Rewarded video

Just spent a lot of time debugging this. The eventlistener callback value for AppodealRewardedEvent.CLOSED for iOS and Android are different.

iOS sends an event called event.fullyWatched and android sends an event called event.isFinished. For clarity:

iOS
Appodeal.addEventListener(AppodealRewardedEvent.CLOSED, (event: any) =>
console.log("Rewarded video closed: ", event.fullyWatched)
)

Android
Appodeal.addEventListener(AppodealRewardedEvent.CLOSED, (event: any) =>
console.log("Rewarded video closed: ", event.isFinished)
)

Not sure about other parameters since this was the only one that I needed.

Anyone can help me ?

I want to implement appodeal to my react-native projects. But this package isn't work. Anyone can help me for implement appodeal to react-native projects ?

How does Consent Manager Work?

I want to collect consent for users covered by GDPR and CCPA and I see Appodeal's consent manager is part of this package. I've used it on the example app but I don't fully understand how it works.

  1. Does it automatically show up if the user is located in a location covered by GDPR or CCPA

  2. How can I test to make sure it's showing up properly based on the user's location? I've tried changing my iOS simulator's location to France for example and I still don't see it popping up.

[iOS] Error: 117 duplicate symbols for architecture x86_64

Can't build new react-native project with react-native-firebase/messaging and react-native-appodeal.

"dependencies": {
"@react-native-firebase/app": "^8.4.1",
"@react-native-firebase/messaging": "^7.8.4",
"react": "16.13.1",
"react-native": "0.63.2",
"react-native-appodeal": "^2.6.5"
}

Podfile:

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'

target 'ReactNativeTutor' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
end

Error:

duplicate symbol '_SetGPBApi_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBApi.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBApi.pbobjc.o)
duplicate symbol '_GPBApi_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBApi.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBApi.pbobjc.o)
duplicate symbol '_SetGPBMethod_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBApi.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBApi.pbobjc.o)
duplicate symbol '_GPBMethod_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBApi.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBApi.pbobjc.o)
duplicate symbol '_GPBCodedInputStreamReadRetainedBytesNoCopy' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamUnderlyingErrorKey' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamPopLimit' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamBytesUntilLimit' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamPushLimit' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadFloat' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadRetainedBytes' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamCheckLastTagWas' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamException' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamErrorDomain' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadEnum' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadBool' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadRetainedString' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadDouble' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamIsAtEnd' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadInt64' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadUInt64' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadSInt64' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadFixed64' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadSFixed64' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadInt32' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadUInt32' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadSInt32' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadFixed32' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBCodedInputStreamReadSFixed32' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedInputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedInputStream.o)
duplicate symbol '_GPBComputeRawVarint32SizeForInteger' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFloatSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeBytesSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUnknownGroupSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeGroupSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeEnumSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeBoolSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeStringSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeDoubleSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeMessageSizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeInt64SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUInt64SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSInt64SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFixed64SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSFixed64SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeInt32SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUInt32SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSInt32SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFixed32SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSFixed32SizeNoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSizeTSizeAsInt32NoTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFloatSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeBytesSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUnknownGroupSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeGroupSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeRawMessageSetExtensionSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeMessageSetExtensionSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeEnumSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeBoolSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeStringSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeWireFormatTagSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeTagSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeDoubleSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeMessageSize' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeRawVarint64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeInt64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUInt64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSInt64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFixed64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSFixed64Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeRawVarint32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeInt32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeUInt32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSInt32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeFixed32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBComputeSFixed32Size' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBCodedOutputStreamException_OutOfSpace' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBCodedOutputStreamException_WriteFailed' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBCodedOutputStream.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBCodedOutputStream.o)
duplicate symbol '_GPBFieldAlternateTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDescriptor.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDescriptor.o)
duplicate symbol '_GPBFieldTag' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDescriptor.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDescriptor.o)
duplicate symbol '_GPBDictionaryReadEntry' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDictionary.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDictionary.o)
duplicate symbol '_GPBDictionaryWriteToStreamInternalHelper' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDictionary.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDictionary.o)
duplicate symbol '_GPBDictionaryComputeSizeInternalHelper' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDictionary.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDictionary.o)
duplicate symbol '_GPBDictionaryIsInitializedInternalHelper' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBDictionary.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBDictionary.o)
duplicate symbol '_GPBErrorReasonKey' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBWasMessageAutocreatedBy' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBBecomeVisibleToAutocreator' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBCreateMessageWithAutocreator' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBClearMessageAutocreator' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBMessageErrorDomain' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBPrepareReadOnlySemaphore' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBGetMessageMapField' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBGetObjectIvarWithField' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBGetMessageRepeatedField' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBAutocreatedDictionaryModified' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBAutocreatedArrayModified' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBMessage.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBMessage.o)
duplicate symbol '_GPBResolveExtensionClassMethod' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBRootObject.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBRootObject.o)
duplicate symbol '_GPBNullValue_EnumDescriptor' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBStruct.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBStruct.pbobjc.o)
duplicate symbol '_SetGPBValue_NullValue_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBStruct.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBStruct.pbobjc.o)
duplicate symbol '_GPBValue_NullValue_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBStruct.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBStruct.pbobjc.o)
duplicate symbol '_GPBNullValue_IsValidValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBStruct.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBStruct.pbobjc.o)
duplicate symbol '_GPBValue_ClearKindOneOfCase' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBStruct.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBStruct.pbobjc.o)
duplicate symbol '_GPBField_Cardinality_EnumDescriptor' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBSyntax_EnumDescriptor' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBField_Kind_EnumDescriptor' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_SetGPBField_Cardinality_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBField_Cardinality_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_SetGPBEnum_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBEnum_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_SetGPBType_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBType_Syntax_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_SetGPBField_Kind_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBField_Kind_RawValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBField_Cardinality_IsValidValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBSyntax_IsValidValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBField_Kind_IsValidValue' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBType.pbobjc.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBType.pbobjc.o)
duplicate symbol '_GPBWellKnownTypesErrorDomain' in:
/Users/anton/Library/Developer/Xcode/DerivedData/ReactNativeTutor-cymfwcmrqxxkobeaiecdktzeodfy/Build/Products/Debug-iphonesimulator/Protobuf/libProtobuf.a(GPBWellKnownTypes.o)
/Users/anton/ReactNativeTutor/ios/Pods/Appodeal/Appodeal.framework/Appodeal(GPBWellKnownTypes.o)
ld: 117 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

you sent a request from invalid bundle_id

My bundle_id is valid (android package name matches one entered in appodeal backend). There isn't much else I can say about this issue except its reporting an invalid bundle_id

AdMob tablet banners exceed height of 90

In July I started to use adSize = 'tablet' for banners on iPad (with a fixed height of 90 in style).
I have noticed that several AdMob banners exceeded the height of 90 so they we're not shown completely (some parts cutoff).

As of 12 august I suddenly received an "Ad serving limit" which is still active. I'm starting to think that this might be the cause as wrong banner placement / overlapping things could also lead into a limit (as I read).

Could it be that sometimes an MRec or adaptive banner that can exceed a height of 90 is shown?

Android: Null pointer exception - Attempt to invoke virtual method void android.view.View.setVisibility(int)

Hi,

We're seeing this issue quite often on Android (via crashlytics).

Maybe worth adding a null pointer check prior to setting the visibility?

Thanks

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
       at com.reactlibrary.RCTAppodealBannerView.showBannerView(RCTAppodealBannerView.java:110)
       at com.reactlibrary.RCTAppodealBannerView.onLayout(RCTAppodealBannerView.java:133)
       at android.view.View.layout(View.java:23754)
       at android.view.ViewGroup.layout(ViewGroup.java:7277)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateLayout(NativeViewHierarchyManager.java:252)
       at com.facebook.react.uimanager.NativeViewHierarchyManager.updateLayout(NativeViewHierarchyManager.java:220)
       at com.facebook.react.uimanager.UIViewOperationQueue$UpdateLayoutOperation.execute(UIViewOperationQueue.java:155)
       at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:792)
       at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:903)
       at com.facebook.react.uimanager.UIViewOperationQueue.access$2400(UIViewOperationQueue.java:43)
       at com.facebook.react.uimanager.UIViewOperationQueue$2.runGuarded(UIViewOperationQueue.java:861)
       at com.facebook.react.bridge.GuardedRunnable.run(GuardedRunnable.java:31)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.app.ActivityThread.main(ActivityThread.java:7948)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

Feature Request: Initialize callback

If I directly show a banner after Appodeal.initialize('Your app key', adTypes, consent), it won't display on App startup. Unless I add a delay of around 1 second in between. Is there any way to know when Appodeal was initialized, so I can show the banner directly after the callback?

undefined is not an object (evaluating 'Appodeal.initializeWithApiKey')

This donยดt work with
"react": "16.2.0",
"react-native": "0.52.2",

Xcode Version 9.2 (9C40b)

This is the stacktrace
undefined is not an object (evaluating 'Appodeal.initializeWithApiKey')
2018-02-01 20:25:49.474860-0600 appodealTest[23664:180237] undefined is not an object (evaluating 'Appodeal.initializeWithApiKey')
2018-02-01 20:25:49.478 [fatal][tid:com.facebook.react.ExceptionsManagerQueue] Unhandled JS Exception: undefined is not an object (evaluating 'Appodeal.initializeWithApiKey')

iOS installation Issue

Has anyone encountered this error?

After following the installation guide for iOS, I get this when trying to build the app on iOS

clang: error: linker command failed with exit code 1 (use -v to see invocation)

I followed the instructions in the README, including the instructions on Appodeal's website for iOS SDK 2.6.4 but it seems that all of the AppDelegate.m files I'm looking at in the react-native-appodeal examples are using Flipper. Am I receiving this error because I'm not using Flipper?

Enviornment
"react-native": "0.61.5"
"react-native-appodeal": "^2.6.4"

AppDelegate.m

#import "AppDelegate.h"

#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <Firebase.h>
#import "RNSplashScreen.h"
#import <CodePush/CodePush.h>
#import <Appodeal/Appodeal.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"wwdbbenji"
                                            initialProperties:nil];

  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;
  [self.window makeKeyAndVisible];
  if ([FIRApp defaultApp] == nil) {
  [FIRApp configure];
  }
  [RNSplashScreen show];
  [Appodeal initializeWithApiKey:@"XXXXX" types:AppodealAdTypeBanner hasConsent:true];
  return YES;
}

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
  return [CodePush bundleURL];
#endif
}

@end

Podfile

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'



def appodeal
  pod 'APDAdColonyAdapter', '2.6.4.1'
  pod 'APDAmazonAdsAdapter', '2.6.4.1'
  pod 'APDAppLovinAdapter', '2.6.4.1'
  pod 'APDAppodealAdExchangeAdapter', '2.6.4.1'
  pod 'APDChartboostAdapter', '2.6.4.1'
  pod 'APDFacebookAudienceAdapter', '2.6.4.1'
  pod 'APDInMobiAdapter', '2.6.4.1'
  pod 'APDInnerActiveAdapter', '2.6.4.1'
  pod 'APDIronSourceAdapter', '2.6.4.1'
  pod 'APDMintegralAdapter', '2.6.4.1'
  pod 'APDMyTargetAdapter', '2.6.4.1'
  pod 'APDOguryAdapter', '2.6.4.1'
  pod 'APDOpenXAdapter', '2.6.4.1'
  pod 'APDPubnativeAdapter', '2.6.4.1'
  pod 'APDSmaatoAdapter', '2.6.4.1'
  pod 'APDStartAppAdapter', '2.6.4.1'
  pod 'APDTapjoyAdapter', '2.6.4.1'
  pod 'APDUnityAdapter', '2.6.4.1'
  pod 'APDVungleAdapter', '2.6.4.1'
  pod 'APDYandexAdapter', '2.6.4.1'
end

target 'wwdbbenji' do
  # Pods for wwdbbenji
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  appodeal


  target 'wwdbbenjiTests' do
    inherit! :search_paths
    # Pods for testing
  end

  use_native_modules!
  use_frameworks!
end

target 'wwdbbenji-tvOS' do
  # Pods for wwdbbenji-tvOS

  target 'wwdbbenji-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

AppodealBanner displays ad but doesn't log impression

AppodealBanner displays the banner ad fine inside the app, however, the impression is not logged. More over, manually loading an ad and showing it with Appodeal.show(AppodealAdType.BANNER_TOP) will log an impression. I tried to put Appodeal.show(AppodealAdType.BANNER_TOP) inside onAdLoaded but no luck there either.

Portrait Mode broken

Hi,

app is locked in portrait mode, (androidmanifest + even tried react-native-force-orientation)
When a landscape reward ad is closed, the app glitches out pretty terribly, it rotates between Portrait and landscape a couple times, and 50% of the time it put the app in landscape mode, until the scene is pop'd (I'm using react-native-router-flux)

"How is this even possible?" that the device is rotating when it's locked.

Change library package name android from com.reactlibrary to com.appodeal

Hello,
I have noticed that the package name of the library is com.reactlibrary which is the default package name of newly created react libraries, could you please change it in the project with com.appodeal or something like that?
This may cause some package name complicates with other packages which have the same problem.

Thank you

App goes background

Hello, i have a problem with rewarded videos, on iOS everything is ok, but on android, when I show the ad, app goes in background at the beginning (the ad continue till the end) ... do you have an idea, maybe some authorization ? thanks for your help

[QUESTION] Do I need to synchronise after user consent?

If I initialize like this:

Appodeal.synchroniseConsent('Your appKey', (consent: AppodealConsentStatus, regulation: AppodealConsentRegulation) => {
    // Initialise Appodeal SDK here
    Appodeal.initialize('Your appKey', adTypes);
})

and we haven't yet asked the user for consent or it's the first time that the user opens the app. Do I need to re-initialize Appodeal after we call this?

Appodeal.forceShowConsentDialog((consent: AppodealConsentStatus, regulation: AppodealConsentRegulation) => {
    // Handle updated data
})

App rejected from Amazon Store

I've just submitted my app to the Play Store and Amazon Store, while it was approved on the Play Store it was rejected on Amazon Store, the reason is the following:

Adds icon to Home Screen for an Ad webview: App contains SDK which has the potential to create a shortcut into device home screen for an Ad webview.

In general, we consider apps that collect personally identifiable information, have advertising displayed outside of an application, or perform an unexpected action to be potential risks. Please refer to Amazon Appstore Distribution Agreement and Amazon Appstore Review Guidelines for guidance.

Many development frameworks may insert libraries into your Android project by default, and may be flagged by us as a potential risk. You may, or may not be using the functionality performed by these libraries, but they can still represent a risk to the user.

We encourage you to modify your app to address the issues above and then resubmit your app for consideration.

Any way to configure Appodeal to prevent this or remove the conflicting SDKs?

onInterstitialLoaded event didn't fires on ios

Hi! Your ios module contain an error
- (void)interstitialDidLoadAd __attribute__((deprecated("Use -interstitialDidLoadAdisPrecache: instead")));

interstitialDidLoadAdisPrecache - not works, this is mistake in method name
Appodeal.framework -> Headers -> APDDefines.h

Replace method name interstitialDidLoadAdisPrecache by interstitialDidLoadAdIsPrecache and event will work.

Native module cannot be null

Getting this error...

screen shot 2018-02-15 at 4 07 51 pm

Even though I have RNAppodeal.a linked...

screen shot 2018-02-15 at 2 08 32 pm

Appodeal installs differently than many of the other packages I've used, and other packages that throw this error say make sure it's linked... I'm lost. Can anyone help me?

error post install - include statically linked binaries

ะžัˆะธะฑะบะฐ ะฟั€ะธ ัƒัั‚ะฐะฝะพะฒะบะต podfile

`platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

source 'https://github.com/appodeal/CocoaPods.git'
source 'https://cdn.cocoapods.org/'

install! 'cocoapods',
:deterministic_uuids => false,
:warn_for_multiple_pod_sources => false

def appodeal
pod 'APDAdColonyAdapter', '2.7.2.1-Beta'
pod 'APDAppLovinAdapter', '2.7.2.1-Beta'
pod 'APDAppodealAdExchangeAdapter', '2.7.2.1-Beta'
pod 'APDChartboostAdapter', '2.7.2.1-Beta'
pod 'APDFacebookAudienceAdapter', '2.7.2.1-Beta'
pod 'APDInMobiAdapter', '2.7.2.1-Beta'
pod 'APDIronSourceAdapter', '2.7.2.1-Beta'
pod 'APDMintegralAdapter', '2.7.2.1-Beta'
pod 'APDMyTargetAdapter', '2.7.2.1-Beta'
pod 'APDOguryAdapter', '2.7.2.1-Beta'
pod 'APDPubnativeAdapter', '2.7.2.1-Beta'
pod 'APDSmaatoAdapter', '2.7.2.1-Beta'
pod 'APDStartAppAdapter', '2.7.2.1-Beta'
pod 'APDTapjoyAdapter', '2.7.2.1-Beta'
pod 'APDUnityAdapter', '2.7.2.1-Beta'
pod 'APDVungleAdapter', '2.7.2.1-Beta'
pod 'APDYandexAdapter', '2.7.2.1-Beta'
end

def add_flipper_pods!(versions = {})
versions['Flipper'] ||= '> 0.33.1'
versions['DoubleConversion'] ||= '1.1.7'
versions['Flipper-Folly'] ||= '
> 2.1'
versions['Flipper-Glog'] ||= '0.3.6'
versions['Flipper-PeerTalk'] ||= '> 0.0.4'
versions['Flipper-RSocket'] ||= '
> 1.0'

pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'

List all transitive dependencies for FlipperKit pods

to avoid them being linked in Release builds

pod 'Flipper', versions['Flipper'], :configuration => 'Debug'
pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'
pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'
pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'
pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'
pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'
pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
end

target 'thegame' do

Pods for thegame

pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/'
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true

pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage'

appodeal

use_native_modules!
use_frameworks!
end`

$ cd ios && pod install && cd .. && react-native run-ios
Adding a custom script phase for Pod RNFBApp: [RNFB] Core Configuration
Detected React Native module pods for RNFBAnalytics, RNFBApp, RNFastImage, and RNSVG
Analyzing dependencies
Downloading dependencies
Installing Firebase (6.27.1)
Installing FirebaseAnalytics (6.6.2)
Installing FirebaseCore (6.8.1)
Installing FirebaseCoreDiagnostics (1.4.0)
Installing FirebaseInstallations (1.4.0)
Installing GoogleAppMeasurement (6.6.2)
Installing GoogleDataTransport (6.2.1)
Installing GoogleDataTransportCCTSupport (3.2.0)
Installing GoogleUtilities (6.6.0)
Installing PromisesObjC (1.2.9)
Installing RNFBAnalytics (7.3.1)
Installing RNFBApp (8.2.0)
Installing RNFastImage (8.1.5)
Installing RNSVG (12.1.0)
Installing SDWebImage (5.8.3)
Installing SDWebImageWebPCoder (0.4.1)
Installing libwebp (1.1.0)
Installing nanopb (1.30905.0)
[!] The 'Pods-thegame' target has transitive dependencies that include statically linked binaries: (FirebaseCore, FirebaseCoreDiagnostics, GoogleDataTransportCCTSupport, GoogleDataTransport, and FirebaseInstallations)

User 10242 does not meet the requirements to access device identifiers.

Hi recently i see this alternative to admob,

Now i using for my apps created in react native, but a find this error in my debug console,
obs: I not living in colombia and not use claro

this error is fired every 3 seconds

FATAL EXCEPTION: main
Process: com.claroColombia.contenedor, PID: 21754
java.lang.RuntimeException: Unable to create application com.claroColombia.contenedor.appdelegate.AppDelegate: java.lang.SecurityException: getSubscriberId: The user 10242 does not meet the requirements to access device identifiers.
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6910)
	at android.app.ActivityThread.access$1400(ActivityThread.java:269)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2010)
	at android.os.Handler.dispatchMessage(Handler.java:107)
	at android.os.Looper.loop(Looper.java:237)
	at android.app.ActivityThread.main(ActivityThread.java:7857)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
Caused by: java.lang.SecurityException: getSubscriberId: The user 10242 does not meet the requirements to access device identifiers.
	at android.os.Parcel.createException(Parcel.java:2088)
	at android.os.Parcel.readException(Parcel.java:2056)
	at android.os.Parcel.readException(Parcel.java:2004)
	at com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy.getSubscriberIdForSubscriber(IPhoneSubInfo.java:1543)
	at android.telephony.TelephonyManager.getSubscriberId(TelephonyManager.java:4509)
	at android.telephony.TelephonyManager.getSubscriberId(TelephonyManager.java:4473)
	at com.digitalturbine.ignite.deviceinfo.SimInfoBase.getActiveIMSIs(SimInfoBase.java:45)
	at com.digitalturbine.ignite.deviceinfo.DeviceInfoBase.getIMSI(DeviceInfoBase.java:259)
	at com.digitalturbine.ignite.receiver.SimChangedTaskWorker$Companion.getNewIMSI(SimChangedTaskWorker.kt:245)
	at com.digitalturbine.ignite.receiver.SimChangedTaskWorker.processSimStateChange(SimChangedTaskWorker.kt:71)
	at com.digitalturbine.ignite.receiver.SimChangedTaskWorker.processInitImsi(SimChangedTaskWorker.kt:146)
	at com.LogiaGroup.LogiaDeck.IgniteCommons.init(IgniteCommons.java:254)
	at com.digitalturbine.igniteui.igniteconnector.IgniteConnectorImpl.<init>(SourceFile:52)
	at com.digitalturbine.igniteui.igniteconnector.IgniteConnectorImpl.<init>(SourceFile:1)
	at com.digitalturbine.igniteui.igniteconnector.IgniteConnector.<init>(SourceFile:1)
	at com.digitalturbine.igniteui.igniteconnector.IgniteConnector.getInstance(SourceFile:2)
	at com.digitalturbine.igniteui.controller.UIController.<init>(SourceFile:570)
	at com.digitalturbine.igniteui.controller.UIController.initSdk(SourceFile:1)
	at com.digitalturbine.igniteui.Ignite.init(SourceFile:45)
	at com.speedymovil.dt.contenedor.IgniteProcess.init(IgniteProcess.java:25)
	at com.claroColombia.contenedor.appdelegate.AppDelegate.onCreate(AppDelegate.java:407)
	at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1190)
	at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6905)
	... 8 more

iOS hangs with RNAppodeal.setOnLoadedTriggerBoth is not a function

I have followed all of the instructions in the read me for iOS. When initialising the app with Appodeal.initialize the app just hangs and outputs:

Unhandled Promise Rejection (id: 0):
TypeError: RNAppodeal.setOnLoadedTriggerBoth is not a function

Looking at the code there is no setOnLoadedTriggerBoth in iOS.

Version:

"react-native-appodeal": "2.7.6",

Env:

System:
    OS: macOS 10.15.7
    CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
    Memory: 223.48 MB / 16.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.9.1 - ~/.nvm/versions/node/v12.9.1/bin/node
    Yarn: 1.22.10 - ~/Documents/projects/translation-app/node_modules/.bin/yarn
    npm: 6.14.4 - ~/.nvm/versions/node/v12.9.1/bin/npm
    Watchman: Not Found
  Managers:
    CocoaPods: 1.9.1 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.2, DriverKit 20.0, macOS 11.0, tvOS 14.2, watchOS 7.1
    Android SDK:
      API Levels: 23, 25, 26, 27, 28, 29
      Build Tools: 28.0.3, 29.0.2
      System Images: android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-30 | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.6010548
    Xcode: 12.2/12B45b - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_172 - /usr/bin/javac
    Python: 2.7.15 - /usr/local/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.13.1 => 16.13.1
    react-native: 0.63.3 => 0.63.3
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Android RNAppodeal.requestAndroidMPermissions got 1 arguments, expected 0

Hi, this looks like a great alternative to AdMob, but I am having a lot of difficulty getting it working on Android.

I've followed the instructions in the Read me and installed: "react-native-appodeal": "2.7.6"

On Android I get the following when initialising:

com.facebook.react.bridge.NativeArgumentsParseException: RNAppodeal.requestAndroidMPermissions got 1 arguments, expected 0

Looking at requestAndroidMPermissions.ts it looks like you are parsing through a callback, but not in expecting it in the Java code?

Screenshot_1605538510

Env:

System:
    OS: macOS 10.15.7
    CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
    Memory: 276.11 MB / 16.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.9.1 - ~/.nvm/versions/node/v12.9.1/bin/node
    Yarn: 1.22.10 - ~/Documents/projects/translation-app/node_modules/.bin/yarn
    npm: 6.14.4 - ~/.nvm/versions/node/v12.9.1/bin/npm
    Watchman: Not Found
  Managers:
    CocoaPods: 1.9.1 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.2, DriverKit 20.0, macOS 11.0, tvOS 14.2, watchOS 7.1
    Android SDK:
      API Levels: 23, 25, 26, 27, 28, 29
      Build Tools: 28.0.3, 29.0.2
      System Images: android-29 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom, android-30 | Google APIs Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.6010548
    Xcode: 12.2/12B45b - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_172 - /usr/bin/javac
    Python: 2.7.15 - /usr/local/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.13.1 => 16.13.1
    react-native: 0.63.3 => 0.63.3
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Menifest merger failed

I took a fresh react-native project with version 0.62. My node version is v12.13.0. Android studio version is 3.6.3 .I followed each single step to integrate sdk. When I try to run the app I get the error -

Manifest merger failed : Attribute application@allowBackup value=(false) from AndroidManifest.xml:11:7-34 is also present at [com.appodeal.ads.sdk.networks:my_target:2.6.0.3] AndroidManifest.xml:11:18-44 value=(true). Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:7:5-117 to override.

I tried to add tools:replace="android:allowBackup" as suggested. Then again I run the app and got another error -

Manifest merger failed : Attribute activity#com.applovin.adview.AppLovinInterstitialActivity@configChanges value=(orientation|screenSize) from [:react-native-appodeal] AndroidManifest.xml:66:13-59 is also present at [com.applovin:applovin-sdk:9.11.1] AndroidManifest.xml:17:13-91 value=(orientation|screenSize|smallestScreenSize|screenLayout). Suggestion: add 'tools:replace="android:configChanges"' to <activity> element at AndroidManifest.xml:64:9-66:62 to override.
I again did as suggested but I keep getting menifest merger error again and again. Please let me know why this problem occur?

No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version')

Hi,
I am getting this error when building my RN project as well as the example project in this repo.
I made sure I have google-play-service installed via Android Studio SDK Manager.

Added to my app build.gradle

    compile "com.google.android.gms:play-services-ads:9.8.0"
    compile "com.google.android.gms:play-services-location:9.8.0"

I also tried to update using the latest google-play-service version.

Adding apply plugin: 'com.google.gms.google-services' in build.gradle didn't help

BannerView takes fixed 320 width (Facebook Ads)

I am using Appodeal.setSmartBanners(true) but noticed this has only effect on fixed top/bottom banners.
My facebook banners always appear in 320x50.

After reading the iOS SDK docs I see it's because there is no way yet (in this package) to toggle usesSmartSizing.

//for banner view allows banner view to resize automatically to fit device screen
bannerView.usesSmartSizing = YES;

Placement ids aren't registered for Android

Hi, thanks a lot for the plugin!

I noticed there is an issue related to the placements.
I have the same code for android & ios and registered the same placements for iOS and Android. iOS works like a charm, but Android placements aren't recognized:

image

How can we fix that?

Cheers!

iOS 14+ Support

Starting in iOS 14, IDFA will be unavailable until an app calls the App Tracking Transparency framework to present the app-tracking authorization request to the end-user. If an app does not present this request, the IDFA will automatically be zeroed out which may lead to a significant loss in ad revenue.

We need to present the App Tracking Transparency authorization request alert and initialize the Appodeal SDK after it's completion. This seems clear with Objective-C or Swift, but I think we need some docs on how to do this with the React Native package.

iOS 14+ Support

(Android) Error: Admob not found + not loading ads

Hi,

I followed the simple Android appodeal installation guide on https://github.com/appodeal/react-native-appodeal. Double checked the manual installation section, all of that has been done. When I run the app on Android all builds fine but on first load I get a small notice at the bottom stating: "Error: Admob not found". I have the onRewardedVideoLoaded and onRewardedVideoFailedToLoad listeners set up that work fine on iOS, however none of them return anything on Android, so the ads just simply never load.

Here's my /build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

ext {
    buildToolsVersion = "28.0.3"
    minSdkVersion = 16
    compileSdkVersion = 28
    targetSdkVersion = 28

    googlePlayServicesVersion = "15.0.1"
    googleSupportLibraryVersion = "28.0.0"
}

subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'com.google.gms:google-services:4.0.1'
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.10.0, 0.99.99]'

        // The Fabric Gradle plugin uses an open ended version to react
        // quickly to Android tooling updates
        classpath 'io.fabric.tools:gradle:1.+'
    }
}

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.6'
    distributionUrl = distributionUrl.replace("bin", "all")
}

Here's my /app/build.gradle:

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
    maven { url 'https://jcenter.bintray.com' }
    maven { url  "https://adcolony.bintray.com/AdColony" }
}

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js",
    nodeExecutableAndArgs: ["/Users/Ilyakar/.nvm/versions/node/v10.1.0/bin/node"]
]

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

android {
  compileSdkVersion 28
  buildToolsVersion "28.0.3"

    defaultConfig {
        applicationId "org.biggo.einee"
        minSdkVersion 16
        targetSdkVersion 28
        multiDexEnabled true
        versionCode 75
        versionName "1.4"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
        renderscriptTargetApi 23
        renderscriptSupportModeEnabled true
    }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    dexOptions {
        jumboMode true
        preDexLibraries = false
        javaMaxHeapSize "4g"
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }

    dependencies {
        implementation fileTree(dir: "libs", include: ["*.jar"])

        implementation project(':react-native-branch')
        implementation project(':react-native-share')
        implementation project(':react-native-amplitude-analytics')
        implementation project(':react-native-rate')
        implementation project(':react-native-fabric')
        implementation project(':react-native-firebase')
        implementation project(':react-native-sound')
        implementation project(':react-native-iap')
        implementation project(':react-native-fbsdk')
        implementation project(':react-native-mail')
        implementation project(':react-native-blur')
        implementation project(':react-native-splash-screen')
        implementation project(':react-native-onesignal')
        implementation project(':react-native-appodeal')

        // React native
        implementation "com.facebook.react:react-native:+"  // From node_modules

        // Gif support
        implementation "com.android.support:appcompat-v7:28.0.0"
        implementation 'com.facebook.fresco:animated-gif:1.3.0'

        // Firebase dependencies
        implementation 'com.google.android.gms:play-services-base:15.0.1'
        implementation 'com.google.firebase:firebase-core:16.0.3'
        implementation 'com.google.firebase:firebase-analytics:16.0.3'
        implementation 'com.google.firebase:firebase-messaging:17.3.3'

        // Fabric dependencies
        implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5@aar'

        // Amplitude analytics
        implementation 'com.amplitude:android-sdk:2.19.1'

        // Extra
        implementation 'com.google.android.gms:play-services-location:15.0.1'
        implementation 'com.android.support:support-v4:28.0.0'
        implementation 'com.android.support:customtabs:28.0.0'
        implementation 'com.android.support:cardview-v7:28.0.0'
        implementation 'com.google.android.gms:play-services-gcm:15.0.1'
    }
}

// Run this once to be able to run the application with BUCK
// puts all implementation dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

apply plugin: 'com.google.gms.google-services'

Any ideas?

IOS - CocoaPods could not find compatible versions for pod "Appodeal"

When trying to setup react-native-appodeal for the ios version of my react-native app, I encountered the following error after typing pod install.

CocoaPods could not find compatible versions for pod "Appodeal":
In snapshot (Podfile.lock):
Appodeal (= 2.7.4-Beta)

In Podfile:
APDPubnativeAdapter (= 2.7.4.1) was resolved to 2.7.4.1, which depends on
Appodeal (= 2.7.4)

RNAppodeal (from `../node_modules/react-native-appodeal`) was resolved to 2.7.4, which depends on
  Appodeal (= 2.7.4-Beta)

You have either:

  • out-of-date source repos which you can update with pod repo update or with pod install --repo-update.
  • changed the constraints of dependency Appodeal inside your development pod RNAppodeal.
    You should run pod update Appodeal to apply changes you've made.`

Here is a view of my package.json dependencies:

"dependencies": {
"react": "16.13.1",
"react-native": "0.63.2",
"react-native-appodeal": "^2.7.4"
},

CocoaPods could not find compatible versions for pod "APDPubnativeAdapter"

It could find version 2.6.3 but not 2.6.4.1 since the update.
All the other adapters install correctly though.

[!] CocoaPods could not find compatible versions for pod "APDPubnativeAdapter":
  In Podfile:
    APDPubnativeAdapter (= 2.6.4.1)

None of your spec sources contain a spec satisfying the dependency: `APDPubnativeAdapter (= 2.6.4.1)`.

iOS integration error

MacOS High Sierra
Version 10.13.5

Xcode
Version 9.4

I followed everything from here.

image

After spent 1 day, I made it worked for Android,
But for iOS, I can not make it work though I spent 3 days.

Here's a screenshot of current issue I've faced while integrating Appodeal

image

And here's a current structure of added library.

image

What's the issue?

Is this because the iOS SDK is not compatible with the latest iOS version?
We need this fixed urgently.

Hope your kindly quick reply.
Best,

more than one banner on a single screen

from the documentation:

Appodeal Banner View can be used only after Appodeal SDK was initialised. You can use show only one banner on screen. Static banners (top or bottom) can't be used in one session with AppodealBanner.

Why is this? Are there plans to make multiple banners on a single screen available in the future?

(by the way, there's a small typo: I think you mean: "You can show only one banner" instead of "You can use show only one banner")

Update documentation: docs link leads to version 2.6.5

Hi there,

Just a short one.

The GitHub docs under point 2 "Add Appodeal adapters. See Docs" leads to version 2.6.5 docs but npm i react-native-appodeal installs 2.7.4 beta. Following the 2.6.5 docs leads to an error after pod install. Please update.

Thanks for the great work!

App crashes

Crashes probably related to unrelated multidex/proguard.

Cocoapods support?

Hello.
Podspec file react-native-appodeal/ios/RNAppodeal.podspec is not correct.
Trying to do pod install, I see this:

[!] The RNAppodeal pod failed to validate due to 1 error:
- ERROR | attributes: Missing required attribute homepage.
- WARN | source: The version should be included in the Git tag.
- WARN | description: The description is equal to the summary.

Vungle sdk seems to be non compliant

Got this message from google
"We found your app is using a non-compliant version of Vungle SDK which contains code to download or install applications from unknown sources outside of Google Play."

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.