关闭

[置顶] Android Studio应用添加KeyMob广告管理库详细教程

310人阅读 评论(0) 收藏 举报

一、创建新项目

在此步骤中,我们将在 Android Studio 中创建一个全新的项目,以在示例中使用。如果您尚未运行 Studio,现在请将其打开。

1:开始新项目向导

如果您看到上面的欢迎屏幕,请选择New Project(新建项目)。除此以外,您还可以从菜单中选择“File”(文件)>“New Project”(新建项目)。这将会打开新项目向导:


2:为您的项目命名

输入“BannerExample”作为应用的名称,另外输入要为应用使用的公司网域。Android Studio 会自动确定一个合适的项目位置,但您可以根据需要随时更改项目位置。


3:设置必需的 SDK 版本

在下一个屏幕上,针对设备规格选择Phone and Tablet(手机和平板电脑),平台 SDK 最低版本为9。该版本是 Google 移动广告 SDK 支持的最低版本。


4:添加主活动

为了让此示例简单易懂,我们在此屏幕上选择Blank Activity(空白活动)


5:为您的活动命名

在此屏幕上,您可以为应用的活动及其相关资源选择名称。我们在此示例中使用默认名称,因此只需点Finish(完成)按钮。


6:编译新项目

点击Finish(完成)后,您将得到一个只包含一个活动的工作项目。请尝试编译并运行该项目(从Run(运行)菜单中选择Run 'app'(运行“应用”))。此时您将会在另一个灰色空白屏幕上看到一条“Hello world!”消息。请不要着急,我们会在后续步骤中添加更多内容。


如果你还不熟悉Android应用的开发,请查看有关USB调试和使用虚拟设备的教程。你需要执行这两项操作中的的一项才能运行您的新应用并查看其外观。

 

二、下载 Google Repository

Android SDK Manager是Android版程序包管理器。您可以使用它来下载要集成到应用中的SDK部件。这些部件不仅包括代码库,还包括构建工具以及适用于模拟器的系统映像等内容。

 

在示例中,我们使用SDK Manager下载Google Repository,该存储库包括很多预构建的工件,使用Android Studio可轻松将这些工件加入项目中。我们感兴趣的工件play-services-ads包含适用Google Play 服务广SDK的资源和经过编译的Java 代码。这听起来很复杂,但后面您将会看到,通过组合使用SDK Manager和Gradle,可以轻松下载和加入正确的代码。

 

Google Repository包含针对Google移动广告SDK 的Gradle工件,您的应用可以使用它们来请求和展示广告。请打开SDK Manager以确保您使用的是最新版本。您可以通过选择“Tools”(工具)>“Android”>“SDK Manager”来查看 SDK Manager 是否是最新版本。

1:SDK Manager

在Android SDK Manager 窗口中,选择Extras文件夹下的Google Repository,然后按Install Packages(安装程序包)并接受许可协议以开始下载。如果Install Packages(安装程序包)按钮不能使用,请不要担心。这恰恰说明您已经拥有最新版本,因此无需在 SDK Manager 中进行任何操作。


2:配置 Gradle

Gradle 是一款免费的开源构建系统,提供了很多面向 Android 开发者的便捷功能(如您即将看到的依赖关系管理功能)。如果您以前没有使用过 Gradle,请访问gradle.org以详细了解Gradle的工作方式。


在这一步骤中,您将要修改build.gradle文件,新项目中有两个这样的文件。一个位于 BannerExample 根文件夹中,是项目级的文件,其中的设置会影响整个项目;另一个文件是应用级的文件,其中的设置是针对项目中的单个应用的,它保存在BannerExample/app文件夹中。如果项目包含多个应用,则每个应用都拥有一个单独的应用级 build.gradle 文件。

 

安装Google Repository 后,您需要更新您的应用以引用其中的Google Play 服务SDK。为此,您可以在应用级的build.gradle文件中添加一行依赖关系。请在BannerExample/app/文件夹中找到该文件并将其打开。

3:build.gradle

dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.2.0'
        compile 'com.google.android.gms:play-services-ads:7.5.0'
    }


更新依赖关系部分以加入最新的 Google Play 服务 SDK。


您可能会在 Android Studio 窗口顶部看到一条警告消息,提示您Gradle 需要执行gradle sync。如果出现这种情况,请点击Sync Now(立即同步)。Gradle 将会刷新项目的库,以涵盖您刚刚添加的依赖关系。


请尝试重新构建您的项目Run(运行)菜单中的 Run 'app'(运行“应用”))以确保正确编译所有内容。您不会看到任何变化,但添加 Google Play 服务是在应用中投放广告的第一步。

三、修改清单文件


每一款 Android 应用都使用一个名为“清单”的文件来向 Android 系统介绍自己。此文件中通常包含如下信息:应用所需的权限,应用包含的活动等。有关清单文件及其工作方式的详细信息,请参阅应用清单简介


您已拥有一个包含Google Play服务的可正常运行的应用,现在需要修改该应用的清单文件,以加入移动广告 SDK 所需的权限、版本号和活动定义。请打开BannerExample/app/src/main/AndroidManifest.xml进行修改。

1、AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms.example.bannerexample" >

<!-- Include required permissions for Google Mobile Ads to run-->
<uses-permission android:name="android.permission.INTERNET"/>


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application android:allowBackup="true" android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >


<!--This meta-data tag is required to use Google Play Services.-->
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />


<activity android:name=".MainActivity"android:label="@string/app_name" >
            <intent-filter> 

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>


        </activity>


<!--Include the AdActivity configChanges and theme. -->


<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />


</application>

</manifest>

您需要完成以下三项更:

1:INTERNETACCESS_NETWORK_STATE添加两个<uses-permission>标记。INTERNET的标记是必需的,用于访问互联网以发送广告请求。ACCESS_NETWORK_STATE是可选的,用于在发出广告请求前检查是否有可用的互联网连接。


2:添加一个引用Google Play 服务版本的<meta-data>标记。这会让 Android 知道您的应用希望使用哪个版本的服务。

 

3:添加具有configChangestheme属性的<activity>元素。当横幅广告被点击或展示插页式广告时,SDK 会使用此活动,而且与其他活动一样,必须在展示之前在清单中声明此活动。


请重新构建该项目以确保所有更改均正确完成。现在您应该仍看到相同的“Hello world!”消息,但通过正确配置应用清单,您的应用将能够使用移动广告。


四:为应用指定广告单元 ID

广告单元 ID是为您的应用中展示广告的位置指定的唯一标识符。如果您的应用包含两个活动(每个活动分别展示一个横幅广告),则会有两个广告单元,各自拥有自己的ID。

为了让您的新应用展示广告,您需要在其中加入广告单元 ID。请打开应用的字符串资源文件,该文件位于BannerExample/app/src/main/res/values/strings.xml


1、strings.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
    <string name="app_name">My Application</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

<string name="banner_ad_unit_id">ca-app-pub-3940256099942544/6300978111</string>


</resources>

添加一个新的<string>标记(如上所示)。请注意,上面提供的广告单元 ID仅用于测试。通过它您可以获取一个横幅广告示例,并确保您的实现正确无误。在开发和测试您的应用时,您应该始终使用测试广告,使用已发布的广告进行测试会违反admob政策,可能会导致您的帐户被暂停。请参见addTestDevice方法的文档,以详细了解如何使用您的广告单元 ID 获得测试广告。


虽然这不是一项强制要求,但将您的广告单元ID值存储在资源文件中是很好的做法。随着您的应用不断发展以及广告发布逐步成熟,您偶尔会需要更改 ID值。如果您确保 ID 值始终都在资源文件中,那么您就无需搜索整个代码来进行查找。


:在主活动布局中放置 AdView

布局文件包含针对活动、片段和列表项等内容的视觉设计的 XML 定义。在这一步骤中,我们将修改主活动的布局文件,以便在其底部加入一个AdView。您可以通过 Java 代码以编程方式向活动添加内容,但利用布局文件是更好的方法,因为可将显示内容和行为分离开来。

 

还需要执行两个步骤,您的应用就可以展示广告了。首先,您需要修改主活动的布局以加入一个AdView。请在编辑器中打开BannerExample/app/src/main/res/layout/activity_main.xml

1、activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"     android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">


<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />


<com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>


</RelativeLayout>

将以下两项内容添加到 XML:

1:一个用于广告的命名空间:http://schemas.android.com/apk/res-auto


2:一个针对 AdView 的新元素。系统会要求您提供layout_widthlayout_height您可以将这两项均设置为wrap_content。在AdView标记中,将adSize设置为BANNER并将adUnitId设置为@string/banner_ad_unit_id

 

如果您查看AdView标记中的最后一个参数,将会看到该参数名为adUnitId。该参数是在请求广告时AdView 使用的广告单元ID。在本示例中,我们让该参数引用您在最后一步中添加的字符串资源,以便AdView 使用该值。

 

六:在 MainActivity 类中加载广告


您需要完成的最后一项更改是向应用的主活动类添加一些 Java 代码,以便将广告加载到AdView


打开您的MainActivity.java文件。该文件位于BannerExample/app/src/main/java/文件夹中,但具体的子目录路径取决于您在上文中创建项目时使用的网域。在编辑器中打开该文件后,在MainActivity类中查找onCreate方法:

1、MainActivity.java(节选)

package ...
import ...
import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;


public class MainActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }

}


请执行以下两项更改:

1:导入AdRequestAdView类。

 

2:添加将在布局中找到AdView的代码,并创建AdRequest,然后使用它将广告加载到AdView中。

 

完成这两项更改后,您已大功告成!现在,您应用的主活动中包含一个具有完整功能的AdView


七:欣赏刚刚加载的广告

现在您的应用可以使用 Google 移动广告 SDK 展示广告。请重新运行您的应用,您会看到设备屏幕底部展示的测试横幅广告:

 

恭喜您!您已成功将横幅广告集成到应用中。


通过上面的教程可以看出KeyMob是 国内开发者专业服务的一个很不错的工具,是目前国内首家具备随意自由切换平台,无需单独SDK集成,自由定价,自自主销售广告,广告互推,应用内交叉推广 的广告聚合平台。该平台将整合国内外主流移动广告平台,并对广告功能进行统一管理、动态配置,广告主和开发者都可以通过简单的操作轻松实现对多家广告平台 的搭配使用。并能辅助开发者过市场审核,客服很好。优点小而精,专做广告服务,对各个广告平台进行精选,集成方便快捷,支持多;缺点是发展得比较晚,系统 在不断升级优化之中。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40443次
    • 积分:1750
    • 等级:
    • 排名:千里之外
    • 原创:142篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档