Menu

App rejeté par le Google Play pour policy violation

Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
-
Bonjour,
J'ai mis une application sur le Play Store, mais Google l'a rejeté et m'a envoyé ce message:

Publishing status: Rejected.
After review, your app has been rejected and wasn't published due to a policy violation. If you submitted an update, the previous version of your app is still available on Google Play.
Reasons of violation
Issue: Violation of Device and Network Abuse policy
We don’t allow apps that interfere with, disrupt, damage, or access in an unauthorized manner the user’s device, other devices or computers, servers, networks, application programming interfaces (APIs), or services, including but not limited to other apps on the device, any Google service, or an authorized carrier’s network.

Your app shouldn’t access or use the service or API in a manner that violates its terms of service. For example, your app shouldn't download, monetize, or access YouTube videos in a way that violates the YouTube Terms of Service


PS: J'ai des vidéos Youtube et des ads dans mon app et merci d'avance de me donner une solution
Afficher la suite 

Votre réponse

5 réponses

Messages postés
4910
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 février 2019
904
0
Merci
Salut guineeguinee,

Tu as peut-être le même problème que la personne ayant proposé cette réponse sur SO :

https://stackoverflow.com/a/43062218/8138432

Je cite la réponse de Darshn :

(...) I got same reply from google. I couldn't figure out what is the issue. So I emailed them to elaborate the issue rather than telling in general. The issue was, I was displaying banner ad while playing video. This violates their youtube policy. I removed the banner ad when video plays and uploaded the apk again. They accepted the apk this time.

You can always mail google asking about the issue, they will respond back in 1-2 days.

Hope it helps some people.


Donc, le premier conseil est de demander à Google la raison précise.

Et si ton application affiche simultanément "(...) des vidéos Youtube et des ads (...)" comme tu sembles le dire, tu peux essayer, comme l'a fait Darshn, de modifier ton application pour ne pas afficher les publicités pendant que les vidéos sont jouées.

Dal
guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23 -
Par contre, moi je n'ai pas de banner, mais un intersticiel, je ne sais pas si c'est pareil.
Commenter la réponse de [Dal]
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23
0
Merci
En plus, j'ai une autre application exactement pareil, une webview avec des vidéos Youtube, un banner et un autre ad, pourtant celle là marche bien, Google l'avait retirée mais c'était à cause du manque de lien vers une politique de confidentialité, une fois réglée, elle est de nouveau dans le store.
[Dal]
Messages postés
4910
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
15 février 2019
904 -
Lis https://developers.google.com/youtube/terms/developer-policies, le G. 1. c) et d) ...

Le d) leur donne un pouvoir d'apprécier si, en gros, ta page a un contenu propre suffisant pour justifier la présence de pubs (quelque soit le procédé) avec une valeur suffisante, ou si tu n'as aucun autre contenu réel, ou que tu te contentes de mettre du contenu bidon ou de faible valeur selon leur appréciation et que ta pub, selon eux, est seulement destinée à profiter du pouvoir attractif de la vidéo YouTube à leur détriment, puisqu'ils vendent, eux-mêmes des publicités sur ces vidéos.

Je t'ai juste donné un exemple de ce qui pourrait concerner ton cas en le rapprochant des éléments d'information que tu as fournis.

Peut-être qu'une de tes applications a du contenu propre qu'ils considèrent justifiable, et l'autre pas, je n'en sais rien.

Comme suggéré ci-dessus, demande leur précisément pour quelle raison ton application a été rejetée, tout en disant que tu veux bien la mettre en conformité, mais que tu ne sais pas ce qu'ils voudraient que tu changes précisément.

Google fait la loi et ils sont toujours d'accord avec eux-même , même lorsque certaines applications échappent à leur vigilance, ou qu'ils changent d'avis du jour au lendemain...
guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23 -
vraiment, "Google fait la loi", je leur ai envoyé un message j'attends leur réponse.
Commenter la réponse de guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23
0
Merci
Google m'a répondu et m'a envoyé une réponse claire, et apparemment mes videos Youtube jouent en background.

During review, we found that your app violates Device and Network Abuse policy by enabling background play of YouTube videos.

For example to illustrate background play is when the audio of a YouTube video continues to play even after the user has navigated away from the page containing that video. (ex: your app continues to play videos when the device is in lock screen mode.)


Y'a t-il une solution simple pour désactiver cela ?
diablo13800
Messages postés
1591
Date d'inscription
jeudi 2 juillet 2015
Dernière intervention
15 février 2019
523 -
Bonjour,

Vous avez juste a coder ce que Google vous demande de faire... Stopper la vidéo quand le téléphone est lock par exemple, ou pas laisser la vidéo tourner en fond ...
Commenter la réponse de guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23
0
Merci
Je viens de tout vérifier, mes vidéos ne jouent pas en arrière-plan, quand je lance une vidéo à partir de l'application et que je lock mon smartphone avec le bouton ON/OFF, ou j'appuie sur le bouton home, la vidéo arrête de jouer, je ne comprends donc pas d'où Google sort cette lecture en arrière-plan.
diablo13800
Messages postés
1591
Date d'inscription
jeudi 2 juillet 2015
Dernière intervention
15 février 2019
523 -
Pour faire simple, une vidéo youtube ne doit être jouer UNIQUEMENT quand elle est en premier plan, tu peux pas te servir d'un audio Youtube pour servir un bandeau par exemple. C'est ce que je comprend du message de Google.
guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23 -
C'est exactement ça, mes vidéos ne jouent que quand je suis sur la page de la vidéo, dès que je change de page dans l'app, la vidéo s'arrête.
Voici mon code Java pour plus d'infos
package com.defte.fouta;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;

import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;


public class MainActivity extends AppCompatActivity {

InterstitialAd minterstitialAd;
private InterstitialAd interstitial;
private WebView mWebview;
private ProgressBar pb;
FloatingActionMenu materialDesignFAM;
FloatingActionButton floatingActionButton1, floatingActionButton2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

AdRequest adRequest = new AdRequest.Builder().build();
// Prepare the Interstitial Ad
interstitial = new InterstitialAd(MainActivity.this);
// Insert the Ad Unit ID
interstitial.setAdUnitId(getString(R.string.interstitial_id));


interstitial.loadAd(adRequest);
// Prepare an Interstitial Ad Listener
interstitial.setAdListener(new AdListener() {
public void onAdLoaded() {
// Call displayInterstitial() function
displayInterstitial();
}
});


materialDesignFAM = (FloatingActionMenu) findViewById(R.id.social_floating_menu);
floatingActionButton1 = (FloatingActionButton) findViewById(R.id.fabFb);
floatingActionButton2 = (FloatingActionButton) findViewById(R.id.fabTw);


floatingActionButton1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//TODO something when floating action menu first item clicked
Intent facebookIntent = getOpenFacebookIntent(MainActivity.this);
startActivity(facebookIntent);

}
});
floatingActionButton2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//TODO something when floating action menu second item clicked
Intent twitterIntent = getOpenTwitterIntent(MainActivity.this);
startActivity(twitterIntent);

}
});

Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar2);
setSupportActionBar(mToolbar);
getSupportActionBar().setTitle("");


pb = (ProgressBar) findViewById(R.id.pb);

mWebview = (WebView) findViewById(R.id.wv1);
WebSettings webSettings = mWebview.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebview.loadUrl("http://www.deftefouta.wordpress.com");
mWebview.setWebViewClient(new WebViewClient());
mWebview.getSettings().setSupportZoom(true);
mWebview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
mWebview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mWebview.getSettings().setAppCacheEnabled(true);
mWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webSettings.setDomStorageEnabled(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setEnableSmoothTransition(true);
mWebview.setScrollbarFadingEnabled(true);


mWebview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
pb.setProgress(progress);
}
});
mWebview.setWebViewClient(new WebViewClient() {

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
pb.setVisibility(View.VISIBLE);


}



@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

@Override
public void onPageFinished(WebView view, String url) {

pb.setVisibility(View.GONE);
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mMenuInflater = getMenuInflater();
mMenuInflater.inflate(R.menu.my_menu, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.home:
Intent home = new Intent(this, MainActivity.class);
startActivity(home);
this.finish();
return true;
case R.id.refresh:
mWebview.reload();
return true;

default:
return super.onOptionsItemSelected(item);
}
}

@Override
public void onBackPressed() {
if (mWebview.canGoBack()) {
mWebview.goBack();
} else {
super.onBackPressed();
}
}


public static Intent getOpenFacebookIntent(Context context) {

try {
context.getPackageManager()
.getPackageInfo("com.facebook.katana", 0); //Checks if FB is even installed.
return new Intent(Intent.ACTION_VIEW,
Uri.parse("fb://page/654801614571847")); //Trys to make intent with FB's URI
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW,
Uri.parse("https://www.facebook.com/deftefouta")); //catches and opens a url to the desired page
}
}

public static Intent getOpenTwitterIntent(Context context) {

try {
context.getPackageManager()
.getPackageInfo("com.twitter.android", 0); //Checks if Twitter is even installed.
return new Intent(Intent.ACTION_VIEW,
Uri.parse("https://twitter.com/deftefouta")); //Trys to make intent with Twitter's's URI
} catch (Exception e) {
return new Intent(Intent.ACTION_VIEW,
Uri.parse("https://twitter.com/deftefouta")); //catches and opens a url to the desired page
}
}

public void displayInterstitial(){
// SI l'Ad est chargé, l'afficher, sinon ne rien afficher
if(interstitial.isLoaded()) {
interstitial.show();
}
}
}

Commenter la réponse de guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23
0
Merci
Il n y a personne là pour me donner une solution ?
diablo13800
Messages postés
1591
Date d'inscription
jeudi 2 juillet 2015
Dernière intervention
15 février 2019
523 -
Je ne peux pas vous aider en développement mobile, peut-etre que quelqu'un viendra analyser votre code:)
guineeguinee
Messages postés
149
Date d'inscription
jeudi 8 décembre 2016
Dernière intervention
14 février 2019
23 -
d'accord merci
Commenter la réponse de guineeguinee