安卓整合極光推送SDK基礎服務

來源:互聯網
上載者:User

標籤:

1.到極光推送官網註冊使用者。

2.建立一個應用根據包名申請app key,注意一個包名對應一個appkey,如果不對應則不能實現功能。

3.下載官網上的SDK,內附指南。



4.首先是各種粘貼複製,注意別漏掉



5.然後是配置Manifest.xml檔案

1)一開始第一條permission被我忘了

2)除了標註著required的部分還要把MyReceiver的部分也複製過來

3)注意該修改包名的地方和最後的appkey,不過官網提供的example裡已經是改好的了可以直接用

    <permission        android:name="com.zhangkong.module.permission.JPUSH_MESSAGE"        android:protectionLevel="signature" />      <!-- Required  一些系統要求的許可權,如訪問網路等-->    <uses-permission android:name="com.zhangkong.module.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:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme"         android:name="com.zhangkong.module.MyApplication">        <activity            android:name=".MainActivity"            android:label="@string/app_name" >                    <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>                        <activity            android:name=".Interface1"            android:label="@string/app_name" >                        </activity>        <activity            android:name=".Interface3"            android:label="@string/app_name" >                        </activity>                                                                 <!-- Rich push 核心功能 since 2.0.6-->        <activity            android:name="cn.jpush.android.ui.PopWinActivity"            android:theme="@style/MyDialogStyle"            android:exported="false">        </activity>        <!-- 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="com.zhangkong.module" />            </intent-filter>        </activity>        <!-- Required  SDK核心功能-->        <service            android:name="cn.jpush.android.service.DownloadService"            android:enabled="true"            android:exported="false" >        </service>                    <!-- Required SDK 核心功能-->        <!-- 可配置android:process參數將PushService放在其他進程中 -->        <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>        <!-- since 1.8.0 option 可選項。用於同一裝置中不同應用的JPush服務相互拉起的功能。 -->        <!-- 若不啟用該功能可刪除該組件,將不拉起其他應用也不能被其他應用拉起 -->        <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="com.zhangkong.module" />            </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="com.zhangkong.module" />            </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" android:exported="false"/>                <!-- User defined.  For test only  使用者自訂的廣播接收器-->        <receiver            android:name="com.zhangkong.module.MyReceiver"            android:exported="false"            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="com.zhangkong.module" />            </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="ea3709c8dac9957b7aa36ba1" /> <!--  </>值來自開發人員平台取得的AppKey-->            </application>

 6.需要複製過來三個類



 7.其他兩個都不需要改動,關鍵的在MyReceiver類裡,和在自己的MainActivity裡添加相應的代碼

//send msg to MainActivityprivate void processCustomMessage(Context context, Bundle bundle) {if (MainActivity.isForeground) {String message = bundle.getString(JPushInterface.EXTRA_MESSAGE);String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);Intent msgIntent = new Intent(MainActivity.MESSAGE_RECEIVED_ACTION);//這個activity也要改msgIntent.putExtra(MainActivity.KEY_MESSAGE, message);//注意這個activity要改成自己的主介面,需要自己定義if (!ExampleUtil.isEmpty(extras)) {try {JSONObject extraJson = new JSONObject(extras);if (null != extraJson && extraJson.length() > 0) {msgIntent.putExtra(MainActivity.KEY_EXTRAS, extras);//這裡同理}} catch (JSONException e) {}}context.sendBroadcast(msgIntent);}}
8.在自己的MainActivity中添加代碼,可以直接從example的MainActivity中複製過來,紅色的部分是我自己加上的,不加總是收不到推送,從網上看到一個例子說需要加上。

public class MainActivity extends Activity {private Button button1;private Button 
        public static boolean isForeground = false;private EditText msgText;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);JPushInterface.init(this);registerMessageReceiver(); // used for receive msginit();button1 = (Button) this.findViewById(R.id.button1);button3 = (Button) this.findViewById(R.id.button3);button1.setOnClickListener(new OnClickListener() {public void onClick(View v) {Intent intent = new Intent(MainActivity.this, Interface1.class);startActivity(intent);}});button3.setOnClickListener(new OnClickListener() {public void onClick(View v) {Intent intent = new Intent(MainActivity.this, Interface3.class);startActivity(intent);}});}private void init() {JPushInterface.init(getApplicationContext());}@Overrideprotected void onResume() {isForeground = true;super.onResume();JPushInterface.onResume(this);//這句是自己加上的}@Overrideprotected void onPause() {isForeground = false;super.onPause();JPushInterface.onPause(this);}@Overrideprotected void onDestroy() {unregisterReceiver(mMessageReceiver);super.onDestroy();}public static final String KEY_TITLE = "title";public static final String KEY_MESSAGE = "message";public static final String KEY_EXTRAS = "extras";private MessageReceiver mMessageReceiver;public static final String MESSAGE_RECEIVED_ACTION = "com.zhangkong.module.MESSAGE_RECEIVED_ACTION";//記得修改包名public void registerMessageReceiver() {mMessageReceiver = new MessageReceiver();IntentFilter filter = new IntentFilter();filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);filter.addAction(MESSAGE_RECEIVED_ACTION);registerReceiver(mMessageReceiver, filter);}public class MessageReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {String messge = intent.getStringExtra(KEY_MESSAGE);String extras = intent.getStringExtra(KEY_EXTRAS);StringBuilder showMsg = new StringBuilder();showMsg.append(KEY_MESSAGE + " : " + messge + "\n");if (!ExampleUtil.isEmpty(extras)) {showMsg.append(KEY_EXTRAS + " : " + extras + "\n");} setCostomMsg(showMsg.toString());}}}private void setCostomMsg(String msg){ if (null != msgText) { msgText.setText(msg); msgText.setVisibility(android.view.View.VISIBLE);        }}}
9.然後就全部OK了,到官網推送個訊息試。點擊訊息後有一個預設顯示的介面,不知道為什麼和我預設的不對,下次再看看,解決後再寫吧!   

           
    
  
        
      


安卓整合極光推送SDK基礎服務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.