Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What is APP_ID and TEST_DEVICE_ID and how to get it? #1

Closed
ghost opened this issue Jul 21, 2017 · 18 comments
Closed

What is APP_ID and TEST_DEVICE_ID and how to get it? #1

ghost opened this issue Jul 21, 2017 · 18 comments
Labels

Comments

@ghost
Copy link

ghost commented Jul 21, 2017

I am a noob to admob and kivy. I am testing out the kivmob using the demo python code in your project. I am able to get banner and interstetial ids from here and when I run the code its asking for APP_ID

NameError: global name 'APP_ID' is not defined

is there a test APP_ID and TEST_DEVICE_ID for testing purpose?

@superjellyfish
Copy link

Hi potholiday.

Your link show a sample for iOS but i think this KivMob has not supported that platform so far.

TEST_DEVICE_ID varies depending on the device where you run your test program. So you have to check the ID by yourself.
For APP_ID, we can get that on Google play console but this is for Android.

I hope my comment will help you.

@ghost
Copy link
Author

ghost commented Jul 21, 2017

@superjellyfish Sorry my bad this is the link for android test ads https://developers.google.com/admob/android/test-ads#sample_ad_units , I have registered a APP_ID in admob I am doing testing in kivy so how should I get TEST_DEVICE_ID for that? any idea

@superjellyfish
Copy link

I'm not sure where you are working on.
But If you have a "real" device to run your app, you can use an ID checking tool you can find on Google play by searching "id checker".
If you use some emulators, also you can use tools described above I think.

@ghost
Copy link
Author

ghost commented Jul 21, 2017

I am doing testing inside my ubuntu system with kivy alone and no emulators. Is TEST_DEVICE_ID a requirement for deploying apps to play store or its just for testing alone?

@superjellyfish
Copy link

@potholiday this is just for testing alone not for deploying. If you don't need any tests of showing ads, you can ignore this part.

@ghost
Copy link
Author

ghost commented Jul 21, 2017

@superjellyfish I am trying to run this sample code; as I dont know the TEST_DEVICE_ID i commented out that line

from kivmob import KivMob
from kivy.app import App
from kivy.uix.button import Button

class KivMobTest(App):
    
    def build(self):
        ads = KivMob("ca-app-pub-MYAPPID") #my app id from admob
        #ads.add_test_device("TEST_DEVICE_ID") #dont know so commented it out
        ads.new_interstitial("ca-app-pub-3940256099942544/1033173712") #test id from google site
        ads.request_interstitial()
        return Button(text='Show Interstitial',
                      on_release= lambda a:ads.show_interstitial())

KivMobTest().run()

this returns no ad

@superjellyfish
Copy link

@potholiday now I'm away from my laptop and cannot remember precisely but I could see the test ad after built it with command "buildozer android release".

@ghost
Copy link
Author

ghost commented Jul 21, 2017

Thank you for taking your time an explaining things. I was initially trying to avoide apk building using buildozer because I want to optimize the code with ads first and then to create executable. It seems I have to build the apk. Now the problem is this

requirements = kivy, hostpython2, android, kivmob
android.permissions = INTERNET, ACCESS_NETWORK_STATE
android.p4a_dir = # dir/to/python-for-android-admob/
android.bootstrap = sdl2-admob

I changed all the parameters in my buildozer spec except android.p4a_dir , I dont have any such parameters in my buildozer spec but I have p4a.source_dir is this both same. Then where is this location /dir/to/python-for-android-admob/ and how to find it. I have kivy installed but not python-for-android

@superjellyfish
Copy link

Don't you copy python-for-android-admob from this repository? You should copy it to your working directory for this app and specify it's path.

@ghost
Copy link
Author

ghost commented Jul 21, 2017

Sorry for the late reply, I was carrying out some work. Now I installed python-for-android-admob in my app directory and made an apk using earlier python code. These are the buildozer spec changes I carried out.

requirements = kivy, hostpython2, android, kivmob
android.permissions = INTERNET, ACCESS_NETWORK_STATE
p4a.source_dir =./python-for-android-admob
p4a.bootstrap = sdl2-admob

The app compiled to apk and installed it in my android device without any error. But when I tried to open the app in my device its saying cant retrieve private data and not opening the app.

@superjellyfish
Copy link

This doesn't look a problem of KivMob. Problem on device setting itself or other line in buildozer.spec, I've never met this problem though.

@ghost
Copy link
Author

ghost commented Jul 22, 2017

Do I post my whole buildozer spec here. So that you can tell me what went wrong

This is my spec file

[app]

# (str) Title of your application
title = My Application

# (str) Package name
package.name = myapp

# (str) Package domain (needed for android/ios packaging)
package.domain = org.test

# (str) Source code where the main.py live
source.dir = .

# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas

# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png

# (list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec

# (list) List of directory to exclude (let empty to not exclude anything)
#source.exclude_dirs = tests, bin

# (list) List of exclusions using pattern matching
#source.exclude_patterns = license,images/*/*.jpg

# (str) Application versioning (method 1)
version = 0.1

# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# (list) Application requirements
# comma seperated e.g. requirements = sqlite3,kivy
requirements = kivy,hostpython2, android, kivmob

# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy

# (list) Garden requirements
#garden_requirements =

# (str) Presplash of the application
#presplash.filename = %(source.dir)s/data/presplash.png

# (str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png

# (str) Supported orientation (one of landscape, portrait or all)
orientation = portrait

# (list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY

#
# OSX Specific
#

#
# author = © Copyright Info

# change the major version of python used by the app
osx.python_version = 3

# Kivy version to use
osx.kivy_version = 1.9.1

#
# Android specific
#

# (bool) Indicate if the application should be fullscreen or not
fullscreen = 0

# (string) Presplash background color (for new android toolchain)
# Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
# red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
# darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
# olive, purple, silver, teal.
#android.presplash_color = #FFFFFF

# (list) Permissions
android.permissions = INTERNET, ACCESS_NETWORK_STATE

# (int) Android API to use
#android.api = 19

# (int) Minimum API required
#android.minapi = 9

# (int) Android SDK version to use
#android.sdk = 20

# (str) Android NDK version to use
#android.ndk = 9c

# (bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True

# (str) Android NDK directory (if empty, it will be automatically downloaded.)
#android.ndk_path =

# (str) Android SDK directory (if empty, it will be automatically downloaded.)
#android.sdk_path =

# (str) ANT directory (if empty, it will be automatically downloaded.)
#android.ant_path =

# (bool) If True, then skip trying to update the Android sdk
# This can be useful to avoid excess Internet downloads or save time
# when an update is due and you just want to test/build your package
# android.skip_update = False

# (str) Android entry point, default is ok for Kivy-based app
#android.entrypoint = org.renpy.android.PythonActivity

# (list) Pattern to whitelist for the whole project
#android.whitelist =

# (str) Path to a custom whitelist file
#android.whitelist_src =

# (str) Path to a custom blacklist file
#android.blacklist_src =

# (list) List of Java .jar files to add to the libs so that pyjnius can access
# their classes. Don't add jars that you do not need, since extra jars can slow
# down the build process. Allows wildcards matching, for example:
# OUYA-ODK/libs/*.jar
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar

# (list) List of Java files to add to the android project (can be java or a
# directory containing the files)
#android.add_src =

# (list) Android AAR archives to add (currently works only with sdl2_gradle
# bootstrap)
#android.add_aars =

# (list) Gradle dependencies to add (currently works only with sdl2_gradle
# bootstrap)
#android.gradle_dependencies =

# (str) python-for-android branch to use, defaults to master
#p4a.branch = stable

# (str) OUYA Console category. Should be one of GAME or APP
# If you leave this blank, OUYA support will not be enabled
#android.ouya.category = GAME

# (str) Filename of OUYA Console icon. It must be a 732x412 png image.
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png

# (str) XML file to include as an intent filters in <activity> tag
#android.manifest.intent_filters =

# (list) Android additionnal libraries to copy into libs/armeabi
#android.add_libs_armeabi = libs/android/*.so
#android.add_libs_armeabi_v7a = libs/android-v7/*.so
#android.add_libs_x86 = libs/android-x86/*.so
#android.add_libs_mips = libs/android-mips/*.so

# (bool) Indicate whether the screen should stay on
# Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False

# (list) Android application meta-data to set (key=value format)
#android.meta_data =

# (list) Android library project to add (will be added in the
# project.properties automatically.)
#android.library_references =

# (str) Android logcat filters to use
#android.logcat_filters = *:S python:D

# (bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1

# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = armeabi-v7a

#
# Python for android (p4a) specific
#

# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
p4a.source_dir =./python-for-android-admob

# (str) The directory in which python-for-android should look for your own build recipes (if any)
#p4a.local_recipes =

# (str) Filename to the hook for p4a
#p4a.hook =

# (str) Bootstrap to use for android builds
p4a.bootstrap = sdl2-admob


#
# iOS specific
#

# (str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir = ../kivy-ios

# (str) Name of the certificate to use for signing the debug version
# Get a list of available identities: buildozer ios list_identities
#ios.codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"

# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s


[buildozer]

# (int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 1

# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1

# (str) Path to build artifact storage, absolute or relative to spec file
# build_dir = ./.buildozer

# (str) Path to build output (i.e. .apk, .ipa) storage
# bin_dir = ./bin

#    -----------------------------------------------------------------------------
#    List as sections
#
#    You can define all the "list" as [section:key].
#    Each line will be considered as a option to the list.
#    Let's take [app] / source.exclude_patterns.
#    Instead of doing:
#
#[app]
#source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
#
#    This can be translated into:
#
#[app:source.exclude_patterns]
#license
#data/audio/*.wav
#data/images/original/*
#


#    -----------------------------------------------------------------------------
#    Profiles
#
#    You can extend section / key with a profile
#    For example, you want to deploy a demo version of your application without
#    HD content. You could first change the title to add "(demo)" in the name
#    and extend the excluded directories to remove the HD content.
#
#[app@demo]
#title = My Application (demo)
#
#[app:source.exclude_patterns@demo]
#images/hd/*
#
#    Then, invoke the command line with the "demo" profile:
#
#buildozer --profile demo android debug

python code

from kivmob import KivMob
from kivy.app import App
from kivy.uix.button import Button

class KivMobTest(App):
    
    def build(self):
        ads = KivMob("ca-app-pub-somerrandomnum~somerrandomnum")
        #ads.add_test_device("*")
        ads.new_interstitial("ca-app-pub-3940256099942544/1033173712")
        ads.request_interstitial()
        return Button(text='Show Interstitial',size_hint_y=0.2,
                      on_release= lambda a:ads.show_interstitial())

KivMobTest().run()

@superjellyfish
Copy link

@potholiday thank you for showing all lines in your bulldozer.spec file. I built your test app by myself and tried to run it on my android device. It works!
This means this problem comes from your android device setting I think.

sorry for less helpful advice for you.

@ghost
Copy link
Author

ghost commented Jul 22, 2017

Thanks for trying. I will try to install it in different device and let you know the result

@MichaelStott
Copy link
Owner

@potholiday Could you post the full error message here? Also, if the ad does not display immediately after pressing the button, wait a few seconds for the ad to load before trying again. The code in the demo folder uses is_interstitial_loaded to check this.

Additionally, TEST_DEVICE_ID is a value specific to your android device and can be found in the logcat output. This is used to trigger test ads during development to prevent unnecessarily charging advertisers. AdMob has policies regarding this on their website, which I highly recommend reading. You can view your Android application logcat output using the following command:

adb logcat

@ghost
Copy link
Author

ghost commented Jul 22, 2017

@superjellyfish @MichaelStott I was searching for the solution for my problem. It seems this is caused by python-for-android . In my device I have less storage capacity that may be the reason which causes this problem . Currently I am searching for some other android devices.

@MichaelStott Thank you for this project and I have this doubt. Is it necessaary to build an apk for testing/running ads with kivmob? Cant we run it from python file itself while development similar to our kivy apps .

@MichaelStott
Copy link
Owner

MichaelStott commented Jul 22, 2017

@potholiday It is necessary to build an apk. The project uses the original Google AdMob SDK, which only runs on mobile platforms (Android, iOS). python-for-android-admob provides the backend which mediates requests from the KivMob module to the AdMob SDK. That is why KivMob will only output log messages when running on a desktop environment.

Because this is an issue with python-for-android and not KivMob, I'm going to close this issue for now. Let me know if you encounter any other problems and good luck!

@saccode
Copy link

saccode commented Dec 3, 2017

Does this project support Py3?

Do we skip hostpython2 in buildozer.spec below while using python3crystax for python3?

requirements = kivy,hostpython2, android, kivmob

Please advise if we have to do anything more when compiling for py3..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants