首先放上「個推」的經典流程圖,圖畫的簡單,但真明白還真不簡單~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