android studio中的极光推送

刚开始用android studio时,经常出现各种bug,用的时间长了,也适应了。现在讲一下android studio中极光推送的运用情况。
步骤一:根据极光推送官网中提供的《Android SDK 集成指南》(详细链接:http://docs.jpush.io/guideline/android_guide/)(以下统称:链接1),具体SDK集成操作步骤如下:
1、导入 SDK 开发包到你自己的应用程序项目—(此处主要和“链接1”中的相关内容一样)

a) 解压缩 jpush-sdk_v1.x.y.zip 集成压缩包 
b) 复制 libs/jpush-sdk-release1.x.y.jar 到工程 libs/ 目录下 
c) 复制 libs/armeabi/libjpush1xy.so 到工程 libs/armeabi 目录下 
d)复制libs/armeabi-v7a/libjpush.so 到工程 libs/armeabi-v7a 目录下

如果您的项目有 libs/armeabi-v7a 这个目录,请把 libs/armeabi-v7a下的so文件 也复制一份到这个目录。

a)  复制 res/drawable-hdpi 中的资源文件到工程的 res/drawable-hdpi/ 目录下 
b)  复制 res/layout中的布局文件到工程的 res/layout/ 目录下

2、配置 AndroidManifest.xml—(此处主要和“链接1”中的相关内容相似)
根据 SDK 压缩包里的 AndroidManifest.xml 样例文件,来配置应用程序项目的 AndroidManifest.xml 。
主要步骤为:

a)  复制备注为 "Required" 的部分 将备注为替换包名的部分,替换为当前应用程序的包名 
b)  将AppKey替换为在Portal上注册该应用的的Key,例如(873ff993ddf32077e9b40cf0)
AndroidStudio中AndroidManifest 示例
<?xml version="1.0" encoding="utf-8"?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="您应用的包名" 
     android:versionCode="205"
     android:versionName="2.0.5"
     >
     <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" />
     <!-- Required 自定义用来收发消息的相关权限 -->
     <permission
         android:name="${applicationId}.permission.JPUSH_MESSAGE"
         android:protectionLevel="signature" />

     <!-- Required 一些系统要求的权限,如访问网络等-->
     <uses-permission android:name="${applicationId}.permission.JPUSH_MESSAGE" />
     <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 


     <!-- Optional for location -->
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />


     <application
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name">


         <!-- Required SDK核心功能-->
         <activity
             android:name="cn.jpush.android.ui.PushActivity"
             android:configChanges="orientation|keyboardHidden" 
             android:theme="@android:style/Theme.NoTitleBar" 
             android:exported="false">
             <intent-filter>
                 <action android:name="cn.jpush.android.ui.PushActivity" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="${applicationId}" />
             </intent-filter>
         </activity>

         <!-- Required SDK核心功能-->
         <service
             android:name="cn.jpush.android.service.DownloadService"
             android:enabled="true"
             android:exported="false" >
         </service>

         <!-- Required SDK 核心功能-->
         <!-- option since 2.0.5 可配置PushService,DaemonService,PushReceiver,AlarmReceiver的android:process参数 将JPush相关组件设置为一个独立进程 -->
         <!-- 如:android:process=":remote" -->
         <service
             android:name="cn.jpush.android.service.PushService"
             android:enabled="true"
             android:exported="false">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.REGISTER" />
                 <action android:name="cn.jpush.android.intent.REPORT" />
                 <action android:name="cn.jpush.android.intent.PushService" />
                 <action android:name="cn.jpush.android.intent.PUSH_TIME" />

             </intent-filter>
         </service>

         <!-- Required SDK 核心功能 since 1.8.0 -->
         <service
             android:name="cn.jpush.android.service.DaemonService"
             android:enabled="true"
             android:exported="true">
             <intent-filter >
                 <action android:name="cn.jpush.android.intent.DaemonService" />
                 <category android:name="${applicationId}"/>
             </intent-filter>
         </service>

         <!-- Required SDK核心功能-->
         <receiver
             android:name="cn.jpush.android.service.PushReceiver"
             android:enabled="true"
             android:exported="false">
             <intent-filter android:priority="1000">
                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 -->
                 <category android:name="${applicationId}" />
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.USER_PRESENT" />
                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
             </intent-filter>
             <!-- Optional -->
             <intent-filter>
                 <action android:name="android.intent.action.PACKAGE_ADDED" />
                 <action android:name="android.intent.action.PACKAGE_REMOVED" />
                 <data android:scheme="package" />
             </intent-filter>
         </receiver>

         <!-- Required SDK核心功能-->
         <receiver android:name="cn.jpush.android.service.AlarmReceiver" />

         <!-- User defined. 用户自定义的广播接收器-->
         <receiver
             android:name="您自己定义的Receiver"
             android:enabled="true">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户注册SDK的intent-->
                 <action android:name="cn.jpush.android.intent.UNREGISTRATION" /> 
                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK消息的intent-->
                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent-->
                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required 用户打开自定义通知栏的intent-->
                 <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" /> <!--Optional 用户接受Rich Push Javascript 回调函数的intent-->
                 <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
                 <category android:name="${applicationId}" />
             </intent-filter>
         </receiver>

         <!-- Required . Enable it you can get statistics data with channel -->
         <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
         <meta-data android:name="JPUSH_APPKEY" android:value="您应用applicationId对应的appKey" /> <!-- </>值来自开发者平台取得的AppKey-->
     </application>
</manifest> 

提示:
其中applicationId为 build.gradle配置中 defaultConfig节点下配置,如:
defaultConfig {
applicationId “cn.jpush.example” // <–您应用的包名

}
3、添加代码—(参考链接1)
JPush SDK 提供的 API 接口,都主要集中在 cn.jpush.android.api.JPushInterface 类里。
因此在项目的相关组件中加入:

1)init 初始化SDK
public static void init(Context context)
2)setDebugMode 设置调试模式
// You can enable debug mode in developing state. You should close debug mode when release.
public static void setDebugMode(boolean debugEnalbed)

4、调用示例代码(参考 在极光推送中创建应用时生成的example 项目)
init 只需要在应用程序启动时调用一次该 API 即可。
以下代码定制一个本应用程序 Application 类。需要在 AndoridManifest.xml 里配置。请参考 AndroidManifest.xml 片断,或者 example 项目。

public class ExampleApplication extends Application {
@Override
        public void onCreate() {
            super.onCreate();
    JPushInterface.setDebugMode(true);
    JPushInterface.init(this);
    }
}

步骤三、测试确认

a)确认所需的权限都已经添加。如果必须的权限未添加,日志会提示错误。
b)确认 AppKey已经正确的写入 Androidmanifest.xml 。
c)确认在程序启动时候调用了init(context) 接口
d)确认测试手机(或者模拟器)已成功连入网络,看logcat中是否有日志信息
e)在极光推送平台上发送一条通知或消息,看下手机或者模拟器是否能够接收成功。

步骤四、将demo中的MyReceiver 整合到项目中
将demo中的MyReceiver整合到项目中(即:让项目能够处理推送过来的信息),该MyReceiver是用来处理接收到的推送通知及其他信息的广播,当activity需要通过推送过来的信息来处理某些功能时,可以在该activity中重新new一个新的receiver,并注册,以便和myReceiver交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值