mirror of
https://github.com/QuasarApp/QtAndroidTools.git
synced 2025-04-26 13:04:32 +00:00
Add property for set non personalized ads for AdMob
This commit is contained in:
parent
1e67ad06b2
commit
87bea4892e
@ -269,8 +269,9 @@ QtAndroidAdMobBanner {
|
||||
unitId: "admob-banner-unit-id"
|
||||
type: QtAndroidAdMobBanner.TYPE_BANNER
|
||||
keywords: ["keyword_1", "keyword_2", "keyword_3"]
|
||||
nonPersonalizedAds: false
|
||||
}</pre>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit. The <i>keywords</i> property is an optional list of keywords needed for better targeting the banner ad. The property <i>type</i> is the banner type you want to show. Possible values are:</p>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit. The <i>keywords</i> property is an optional list of keywords needed for better targeting the banner ad. The <i>nonPersonalizedAds</i> property is optional (default is false). Set this property to true impose to AdMob to don't use collected user personal data for ads targeting. The property <i>type</i> is the banner type you want to show. Possible values are:</p>
|
||||
<pre class="prettyprint">TYPE_BANNER
|
||||
TYPE_FULL_BANNER
|
||||
TYPE_LARGE_BANNER
|
||||
@ -317,8 +318,9 @@ android.permission.WRITE_EXTERNAL_STORAGE</pre>
|
||||
<pre class="prettyprint">QtAndroidAdMobInterstitial {
|
||||
id: interstitial
|
||||
unitId: "admob-interstitial-unit-id"
|
||||
nonPersonalizedAds: false
|
||||
}</pre>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit.</p>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit. The <i>nonPersonalizedAds</i> property is optional (default is false). Set this property to true impose to AdMob to don't use collected user personal data for ads targeting.</p>
|
||||
<p>This item generate the following signals informing regarding the ad status:</p>
|
||||
<pre class="prettyprint">onLoadError
|
||||
onLoading
|
||||
@ -361,8 +363,9 @@ android.permission.WRITE_EXTERNAL_STORAGE</pre>
|
||||
<pre class="prettyprint">QtAndroidAdMobRewardedVideo {
|
||||
id: rewardedVideo
|
||||
unitId: "admob-rewarded-video-unit-id"
|
||||
nonPersonalizedAds: false
|
||||
}</pre>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit.</p>
|
||||
<p>The <i>unitId</i> is the string generated when you create a new ad unit inside the AdMob site. It's used to identify the ad connected to your app. Using this id you can know how much you earn from this ad unit. The <i>nonPersonalizedAds</i> property is optional (default is false). Set this property to true impose to AdMob to don't use collected user personal data for ads targeting.</p>
|
||||
<p>This item generate the following signals informing regarding the ad status:</p>
|
||||
<pre class="prettyprint">onRewarded
|
||||
onLoadError
|
||||
|
@ -34,6 +34,7 @@ QAndroidAdMobBanner::QAndroidAdMobBanner(QQuickItem *parent) : QQuickItem(parent
|
||||
QtAndroid::androidActivity().object<jobject>()),
|
||||
m_instanceIndex(m_instancesCounter++),
|
||||
m_bannerType(TYPE_NO_BANNER),
|
||||
m_nonPersonalizedAds(false),
|
||||
m_bannerShowed(false)
|
||||
{
|
||||
m_pInstancesMap[m_instanceIndex] = this;
|
||||
@ -182,6 +183,23 @@ void QAndroidAdMobBanner::setType(BANNER_TYPE type)
|
||||
}
|
||||
}
|
||||
|
||||
bool QAndroidAdMobBanner::getNonPersonalizedAds() const
|
||||
{
|
||||
return m_nonPersonalizedAds;
|
||||
}
|
||||
|
||||
void QAndroidAdMobBanner::setNonPersonalizedAds(bool npa)
|
||||
{
|
||||
if(m_javaAdMobBanner.isValid())
|
||||
{
|
||||
m_javaAdMobBanner.callMethod<void>("setNonPersonalizedAds",
|
||||
"(Z)V",
|
||||
npa
|
||||
);
|
||||
m_nonPersonalizedAds = npa;
|
||||
}
|
||||
}
|
||||
|
||||
void QAndroidAdMobBanner::screenGeometryChanged(const QRect &geometry)
|
||||
{
|
||||
Q_UNUSED(geometry)
|
||||
|
@ -32,6 +32,7 @@ class QAndroidAdMobBanner : public QQuickItem
|
||||
Q_PROPERTY(QString unitId READ getUnitId WRITE setUnitId)
|
||||
Q_PROPERTY(BANNER_TYPE type READ getType WRITE setType)
|
||||
Q_PROPERTY(QStringList keywords READ getKeywords WRITE setKeywords)
|
||||
Q_PROPERTY(bool nonPersonalizedAds READ getNonPersonalizedAds WRITE setNonPersonalizedAds)
|
||||
Q_ENUMS(BANNER_TYPE)
|
||||
Q_ENUMS(ERROR_TYPE)
|
||||
Q_OBJECT
|
||||
@ -68,6 +69,8 @@ public:
|
||||
void setType(BANNER_TYPE type);
|
||||
const QStringList& getKeywords() const;
|
||||
void setKeywords(const QStringList &keywordsList);
|
||||
bool getNonPersonalizedAds() const;
|
||||
void setNonPersonalizedAds(bool npa);
|
||||
|
||||
static const QMap<int, QAndroidAdMobBanner*>& instances();
|
||||
|
||||
@ -88,6 +91,7 @@ private:
|
||||
static int m_instancesCounter;
|
||||
const int m_instanceIndex;
|
||||
BANNER_TYPE m_bannerType;
|
||||
bool m_nonPersonalizedAds;
|
||||
bool m_bannerShowed;
|
||||
QString m_unitId;
|
||||
QStringList m_keywordsList;
|
||||
|
@ -31,7 +31,8 @@ QAndroidAdMobInterstitial::QAndroidAdMobInterstitial(QQuickItem *parent) : QQuic
|
||||
m_javaAdMobInterstitial("com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial",
|
||||
"(Landroid/app/Activity;)V",
|
||||
QtAndroid::androidActivity().object<jobject>()),
|
||||
m_instanceIndex(m_instancesCounter++)
|
||||
m_instanceIndex(m_instancesCounter++),
|
||||
m_nonPersonalizedAds(false)
|
||||
{
|
||||
m_pInstancesMap[m_instanceIndex] = this;
|
||||
|
||||
@ -101,6 +102,23 @@ void QAndroidAdMobInterstitial::setUnitId(const QString &unitId)
|
||||
}
|
||||
}
|
||||
|
||||
bool QAndroidAdMobInterstitial::getNonPersonalizedAds() const
|
||||
{
|
||||
return m_nonPersonalizedAds;
|
||||
}
|
||||
|
||||
void QAndroidAdMobInterstitial::setNonPersonalizedAds(bool npa)
|
||||
{
|
||||
if(m_javaAdMobInterstitial.isValid())
|
||||
{
|
||||
m_javaAdMobInterstitial.callMethod<void>("setNonPersonalizedAds",
|
||||
"(Z)V",
|
||||
npa
|
||||
);
|
||||
m_nonPersonalizedAds = npa;
|
||||
}
|
||||
}
|
||||
|
||||
void QAndroidAdMobInterstitial::interstitialEvent(JNIEnv *env, jobject thiz, jint eventId)
|
||||
{
|
||||
QMapIterator<int, QAndroidAdMobInterstitial*> instance(m_pInstancesMap);
|
||||
|
@ -30,6 +30,7 @@
|
||||
class QAndroidAdMobInterstitial : public QQuickItem
|
||||
{
|
||||
Q_PROPERTY(QString unitId READ getUnitId WRITE setUnitId)
|
||||
Q_PROPERTY(bool nonPersonalizedAds READ getNonPersonalizedAds WRITE setNonPersonalizedAds)
|
||||
Q_ENUMS(ERROR_TYPE)
|
||||
Q_OBJECT
|
||||
|
||||
@ -50,6 +51,8 @@ public:
|
||||
|
||||
const QString& getUnitId() const;
|
||||
void setUnitId(const QString &unitId);
|
||||
bool getNonPersonalizedAds() const;
|
||||
void setNonPersonalizedAds(bool npa);
|
||||
|
||||
static const QMap<int, QAndroidAdMobInterstitial*>& instances();
|
||||
|
||||
@ -65,6 +68,7 @@ private:
|
||||
static QMap<int, QAndroidAdMobInterstitial*> m_pInstancesMap;
|
||||
static int m_instancesCounter;
|
||||
const int m_instanceIndex;
|
||||
bool m_nonPersonalizedAds;
|
||||
QString m_unitId;
|
||||
|
||||
enum EVENT_TYPE
|
||||
|
@ -31,7 +31,8 @@ QAndroidAdMobRewardedVideo::QAndroidAdMobRewardedVideo(QQuickItem *parent) : QQu
|
||||
m_javaAdMobRewardedVideo("com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo",
|
||||
"(Landroid/app/Activity;)V",
|
||||
QtAndroid::androidActivity().object<jobject>()),
|
||||
m_instanceIndex(m_instancesCounter++)
|
||||
m_instanceIndex(m_instancesCounter++),
|
||||
m_nonPersonalizedAds(false)
|
||||
{
|
||||
m_pInstancesMap[m_instanceIndex] = this;
|
||||
|
||||
@ -98,6 +99,23 @@ void QAndroidAdMobRewardedVideo::setUnitId(const QString &unitId)
|
||||
m_unitId = unitId;
|
||||
}
|
||||
|
||||
bool QAndroidAdMobRewardedVideo::getNonPersonalizedAds() const
|
||||
{
|
||||
return m_nonPersonalizedAds;
|
||||
}
|
||||
|
||||
void QAndroidAdMobRewardedVideo::setNonPersonalizedAds(bool npa)
|
||||
{
|
||||
if(m_javaAdMobRewardedVideo.isValid())
|
||||
{
|
||||
m_javaAdMobRewardedVideo.callMethod<void>("setNonPersonalizedAds",
|
||||
"(Z)V",
|
||||
npa
|
||||
);
|
||||
m_nonPersonalizedAds = npa;
|
||||
}
|
||||
}
|
||||
|
||||
void QAndroidAdMobRewardedVideo::rewardedVideoReward(JNIEnv *env, jobject thiz, jstring type, jint amount)
|
||||
{
|
||||
QMapIterator<int, QAndroidAdMobRewardedVideo*> instance(m_pInstancesMap);
|
||||
|
@ -30,6 +30,7 @@
|
||||
class QAndroidAdMobRewardedVideo : public QQuickItem
|
||||
{
|
||||
Q_PROPERTY(QString unitId READ getUnitId WRITE setUnitId)
|
||||
Q_PROPERTY(bool nonPersonalizedAds READ getNonPersonalizedAds WRITE setNonPersonalizedAds)
|
||||
Q_ENUMS(ERROR_TYPE)
|
||||
Q_OBJECT
|
||||
|
||||
@ -50,6 +51,8 @@ public:
|
||||
|
||||
const QString& getUnitId() const;
|
||||
void setUnitId(const QString &unitId);
|
||||
bool getNonPersonalizedAds() const;
|
||||
void setNonPersonalizedAds(bool npa);
|
||||
|
||||
static const QMap<int, QAndroidAdMobRewardedVideo*>& instances();
|
||||
|
||||
@ -69,6 +72,7 @@ private:
|
||||
static QMap<int, QAndroidAdMobRewardedVideo*> m_pInstancesMap;
|
||||
static int m_instancesCounter;
|
||||
const int m_instanceIndex;
|
||||
bool m_nonPersonalizedAds;
|
||||
QString m_unitId;
|
||||
|
||||
enum EVENT_TYPE
|
||||
|
@ -93,6 +93,12 @@ contains(DEFINES, QTAT_ADMOB_BANNER) {
|
||||
copy_admob_banner.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMobBanner.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob_banner
|
||||
QMAKE_EXTRA_TARGETS += copy_admob_banner
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_admob) {
|
||||
copy_admob.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob
|
||||
QMAKE_EXTRA_TARGETS += copy_admob
|
||||
OTHER_FILES += $$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java
|
||||
}
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_sync_run_on_ui_thread) {
|
||||
copy_sync_run_on_ui_thread.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/SyncRunOnUiThread.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_sync_run_on_ui_thread
|
||||
@ -108,6 +114,12 @@ contains(DEFINES, QTAT_ADMOB_INTERSTITIAL) {
|
||||
copy_admob_interstitial.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMobInterstitial.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob_interstitial
|
||||
QMAKE_EXTRA_TARGETS += copy_admob_interstitial
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_admob) {
|
||||
copy_admob.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob
|
||||
QMAKE_EXTRA_TARGETS += copy_admob
|
||||
OTHER_FILES += $$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java
|
||||
}
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_sync_run_on_ui_thread) {
|
||||
copy_sync_run_on_ui_thread.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/SyncRunOnUiThread.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_sync_run_on_ui_thread
|
||||
@ -123,6 +135,12 @@ contains(DEFINES, QTAT_ADMOB_REWARDED_VIDEO) {
|
||||
copy_admob_rewarded_video.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMobRewardedVideo.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob_rewarded_video
|
||||
QMAKE_EXTRA_TARGETS += copy_admob_rewarded_video
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_admob) {
|
||||
copy_admob.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_admob
|
||||
QMAKE_EXTRA_TARGETS += copy_admob
|
||||
OTHER_FILES += $$PWD/src/com/falsinsoft/qtandroidtools/AndroidAdMob.java
|
||||
}
|
||||
!contains(QMAKE_EXTRA_TARGETS, copy_sync_run_on_ui_thread) {
|
||||
copy_sync_run_on_ui_thread.commands = $(COPY_FILE) $$shell_path($$PWD/src/com/falsinsoft/qtandroidtools/SyncRunOnUiThread.java) $$shell_path($$ANDROID_PACKAGE_SOURCE_DIR/src/com/falsinsoft/qtandroidtools/)
|
||||
PRE_TARGETDEPS += copy_sync_run_on_ui_thread
|
||||
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2018 Fabio Falsini <falsinsoft@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package com.falsinsoft.qtandroidtools;
|
||||
|
||||
import com.google.ads.mediation.admob.AdMobAdapter;
|
||||
import com.google.android.gms.ads.AdRequest;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class AndroidAdMob
|
||||
{
|
||||
private boolean mNonPersonalizedAds = false;
|
||||
|
||||
public void setNonPersonalizedAds(boolean npa)
|
||||
{
|
||||
mNonPersonalizedAds = npa;
|
||||
}
|
||||
|
||||
protected void setExtraOptions(AdRequest.Builder builder)
|
||||
{
|
||||
if(mNonPersonalizedAds)
|
||||
{
|
||||
final Bundle extras = new Bundle();
|
||||
extras.putString("npa", "1");
|
||||
builder.addNetworkExtrasBundle(AdMobAdapter.class, extras);
|
||||
}
|
||||
}
|
||||
}
|
@ -39,7 +39,7 @@ import android.graphics.Rect;
|
||||
import android.widget.FrameLayout;
|
||||
import android.graphics.Color;
|
||||
|
||||
public class AndroidAdMobBanner
|
||||
public class AndroidAdMobBanner extends AndroidAdMob
|
||||
{
|
||||
private final Activity mActivityInstance;
|
||||
private final ViewGroup mViewGroup;
|
||||
@ -168,6 +168,7 @@ public class AndroidAdMobBanner
|
||||
bannerRequest.addKeyword(keyword);
|
||||
}
|
||||
}
|
||||
setExtraOptions(bannerRequest);
|
||||
mBannerView.loadAd(bannerRequest.build());
|
||||
|
||||
bannerEvent(EVENT_LOADING);
|
||||
|
@ -38,7 +38,7 @@ import android.graphics.Rect;
|
||||
import android.widget.FrameLayout;
|
||||
import android.graphics.Color;
|
||||
|
||||
public class AndroidAdMobInterstitial
|
||||
public class AndroidAdMobInterstitial extends AndroidAdMob
|
||||
{
|
||||
private final Activity mActivityInstance;
|
||||
private final InterstitialListener mInterstitialListener;
|
||||
@ -82,6 +82,7 @@ public class AndroidAdMobInterstitial
|
||||
public void run()
|
||||
{
|
||||
AdRequest.Builder interstitialRequest = new AdRequest.Builder();
|
||||
setExtraOptions(interstitialRequest);
|
||||
mInterstitialAd.loadAd(interstitialRequest.build());
|
||||
interstitialEvent(EVENT_LOADING);
|
||||
mInterstitialAdLoaded = false;
|
||||
|
@ -34,7 +34,7 @@ import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
public class AndroidAdMobRewardedVideo
|
||||
public class AndroidAdMobRewardedVideo extends AndroidAdMob
|
||||
{
|
||||
private final Activity mActivityInstance;
|
||||
private final RewardedVideoListener mRewardedVideoListener;
|
||||
@ -44,7 +44,6 @@ public class AndroidAdMobRewardedVideo
|
||||
public AndroidAdMobRewardedVideo(Activity activityInstance)
|
||||
{
|
||||
mRewardedVideoListener = new RewardedVideoListener();
|
||||
MobileAds.initialize(activityInstance);
|
||||
mActivityInstance = activityInstance;
|
||||
}
|
||||
|
||||
@ -62,7 +61,9 @@ public class AndroidAdMobRewardedVideo
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
mRewardedVideoAd.loadAd(finalUnitId, new AdRequest.Builder().build());
|
||||
AdRequest.Builder rewardedVideoRequest = new AdRequest.Builder();
|
||||
setExtraOptions(rewardedVideoRequest);
|
||||
mRewardedVideoAd.loadAd(finalUnitId, rewardedVideoRequest.build());
|
||||
rewardedVideoEvent(EVENT_LOADING);
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user