首先放上“个推”的经典流程图,图画的简单,但真明白还真不简单~java
作“个推”准备工做的时候先在AndroidManifest.xml里面添加各类权限啦,推送啦之类的东西,这些官网上都有android
AndroidManifest.xml中服务器
<meta-data android:name="PUSH_APPID" android:value="你的appid"/> <!--替换为第三方应用的APPID--> <meta-data android:name="PUSH_APPKEY" android:value="你的appkey"/> <!--替换为第三方应用的APPKEY--> <meta-data android:name="PUSH_APPSECRET" android:value="你的appsecret"/> <meta-data android:name="PUSH_GROUPID" android:value="" /> <!-- 提交clientID给服务器端 --> <receiver android:name="com.android.customer.apush.APushSdkMsgReceiver" android:exported="false" > <intent-filter> <action android:name="com.igexin.sdk.action.你的appid" /> </intent-filter> </receiver> <!--配置SDK核心服务--> <service android:name="com.igexin.sdk.PushService" android:exported="true" android:label="NotificationCenter" android:process=":pushservice"> </service> <receiver android:name="com.igexin.sdk.PushReceiver"> <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"/> <action android:name="com.igexin.sdk.action.refreshls"/> </intent-filter> </receiver> <receiver android:name="com.igexin.sdk.PushManagerReceiver" android:exported="false" > <intent-filter> <action android:name="com.igexin.sdk.action.pushmanager" /> </intent-filter> </receiver> <activity android:name="com.igexin.sdk.PushActivity" android:excludeFromRecents="true" android:exported="false" android:process=":pushservice" android:taskAffinity="com.igexin.sdk.PushActivityTask" android:theme="@android:style/Theme.Translucent.NoTitleBar"> </activity> <!-- 配置弹框activity --> <activity android:name="com.igexin.getuiext.activity.GetuiExtActivity" android:configChanges="orientation|keyboard|keyboardHidden" android:excludeFromRecents="true" android:exported="false" android:process=":pushservice" android:taskAffinity="android.task.myServicetask" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <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.你的appid" /> </intent-filter> </receiver> <service android:name="com.igexin.download.DownloadService" android:process=":pushservice" /> <receiver android:name="com.igexin.download.DownloadReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> <provider android:name="com.igexin.download.DownloadProvider" android:authorities="downloads.com.android.customer" android:process=":pushservice" /> <!-- 如下为权限部分 --> <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="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="getui.permission.GetuiService.第三方包名" /> <uses-permission android:name="android.permission.GET_TASKS"/> <!-- 自定义权限 --> <permission android:name="getui.permission.GetuiService.第三方包名" android:protectionLevel="normal" > </permission>
在这个总配置文件里面有这部分,这个ApushSdkMsgReceiver.java文件是提交clientID给服务端的,同时传入到Activity.java里面app
<!-- 提交clientID给服务器端 --> <receiver android:name="com.android.customer.apush.APushSdkMsgReceiver" android:exported="false" > <intent-filter> <action android:name="com.igexin.sdk.action.你的appid" /> </intent-filter> </receiver>
而后就开始把<UID,ClientID>保存到服务端上,而后链接既往服务端发送消息,而后作接收服务器返回值操做。ide
这里多谢谢个推交流群,否则我这问题虽小,但还不知什么时候解决ui
在安卓手机上,Clientid只会绑定一次appid,一旦绑定成功了,就不会改变,若是想改变的话就须要把应用卸载了,而后删除SD卡的libs文件,这时会生成一个新的Clientid~.net
我出现的问题就是服务端的appid和我程序里面的clientid不一致,而后推送消息就没反应。code
但愿我出现的问题能够给你们当个建议~orm