一. 引子
推送服务我们都不陌生,每天你手机上的应用都会推送或多或少的信息到你的手机。这些推送信息有些是由应用开发商自己提供的,而有些则是通过第三方的推送服务上提供的,比如今天我们体验的“个推”推送平台。点击打开链接
二.开发步骤
个推提供了详细的技术文档,所以学习和使用起来都比较简单。下面我们就跟着技术文档的教程一步一步来做吧。
步骤一:注册个推账号。不说了,大家都懂的。
步骤二:登录账号,新建应用。以下界面就是登记应用界面,可以填上应用的一些信息。
登记成功后我们可以在首页中看到以下的一些信息,而这些信息是我们开发app所必要的。
步骤三: 开发自己的个推应用
在开发应用中又包括了几个步骤。
1.从个推官网下载sdk。
2.新建工程,并向libs文件夹中复制黏贴下载的jar包。在build path中导入这些jar包。
3.导入必要库
import com.igexin.sdk.Consts; import com.igexin.slavesdk.MessageManager;
MessageManager.getInstance().initialize(this.getApplicationContext());
增加权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="getui.permission.GetuiService" /> <!-- 可选权限 --> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 自定义权限 --> <permission android:name="getui.permission.GetuiService" android:protectionLevel="normal" > </permission>
在application标签中注册必要信息, 其中有些信息需要自行修改。注意中文注释
<!-- 个推SDK配置开始 -->
<!-- 配置的第三方参数属性 -->
<meta-data android:name="appid" android:value="你应用的appid" />
<meta-data android:name="appsecret" android:value="你应用的appsecret" />
<meta-data android:name="appkey" android:value="你应用的appkey" />
<meta-data android:name="groupid" android:value="" />
<activity android:name="com.igexin.sdk.SdkActivity"
android:process=":pushservice"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:taskAffinity="android.task.GexinSdkActivityTask"
android:excludeFromRecents="true"
android:exported="false">
<intent-filter>
<action android:name="com.igexin.action.popupact.com.igexin.demo" />
<!--
这里需要改
com.igexin.action.popupact.第三方的包名
-->
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- 配置弹框activity -->
<activity android:name="com.igexin.getuiext.activity.GetuiExtActivity"
android:process=":pushservice"
android:configChanges="orientation|keyboard|keyboardHidden"
android:excludeFromRecents="true"
android:taskAffinity="android.task.myServicetask"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false" />
<service android:label="NotifyCenter"
android:name="com.igexin.sdk.SdkMainService"
android:process=":pushservice"
android:exported="false">
</service>
<service android:label="NotifyCenterAIDL"
android:name="com.igexin.sdk.coordinator.SdkMsgService"
android:process=":pushservice"
android:exported="true">
</service>
<!-- 个推download模块配置-->
<service android:name="sdk.download.DownloadService"
android:process=":pushservice" />
<receiver
android:exported="false" android:name="sdk.download.DownloadReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<provider android:authorities="sdk.download.com.igexin.demo"<!--这里需要改-->
android:process=":pushservice"
android:name="sdk.download.DownloadProvider"/>
<!-- android:authorities="sdk.download.第三方包名" -->
<!-- GetuiExt模块配置 -->
<service android:name="com.igexin.getuiext.service.GetuiExtService"
android:exported="false"
android:process=":pushservice" />
<receiver android:name="com.igexin.getuiext.service.PayloadReceiver"
android:exported="false" >
<intent-filter>
<!-- 这个com.igexin.sdk.action.7fjUl2Z3LH6xYy7NQK4ni4固定,不能修改 -->
<action android:name="com.igexin.sdk.action.7fjUl2Z3LH6xYy7NQK4ni4" />
<!-- android:name="com.igexin.sdk.action.第三方的appId" --> <!--这里需要改-->
<action android:name="com.igexin.sdk.action.b03c5cfef65ed30108f0a3fd82c3f6b4" />
</intent-filter>
</receiver>
<service android:name="com.igexin.download.DownloadService"
android:exported="false"
android:process=":pushservice" />
<provider android:authorities="increment.download.com.igexin.demo"
android:process=":pushservice"
android:exported="false"
android:name="com.igexin.download.DownloadProvider" />
<receiver
android:exported="false" android:name="com.igexin.download.DownloadReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name="com.igexin.sdk.SdkReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="com.igexin.sdk.coordinator.NotificationCenterAIDLReceiver">
<intent-filter>
<action android:name="com.igexin.sdk.action.refreshls" />
</intent-filter>
</receiver>
<!-- =========================================================================== -->
到这里我们应用的配置就ok了,可以尝试下发送信息。看手机是否接收到信息。
三.总结
以上就是使用个推推送服务开发的基本步骤。但通过这样我们手机只是接收到消息并放到消息栏中,我们的应用是没有对这些信息进行处理的,如果要推送我们应用能够接受处理的信息就需要使用透传消息。这部分在下一篇博客中讲。