關於「個推」消息推送遇到的問題整理

首先放上「個推」的經典流程圖,圖畫的簡單,但真明白還真不簡單~java

  1. 作「個推」準備工做的時候先在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

相關文章
相關標籤/搜索