極光IM簡單接入步驟


最近生接觸了一下android,嘗試導入極光的demo到android study 各種錯誤,然后下載極光生成的項目也是各種錯誤,感覺好像有點脫離時代了,記得以前用eclipse寫android只需要考慮能不能連接上google服務器的問題,從來沒有各種因升級導致的這不行那不么,怎么到android study每升級一次就郁悶一堆人呢...

干脆新建一個項目,手動導入

整個過程分為  1 添加權限   2  添加服務和廣播  3導入libs   4 編碼

1 權限

 我是直接復制的demo中的權限設定,里面有一個自定義權限,需要把包名改成當前包名

 

  <permission android:name="包名.permission.JPUSH_MESSAGE"
        android:protectionLevel="signature" />

    <!-- Required -->
    <uses-permission android:name="包名.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.VIBRATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!-- Required for jmrtc -->
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />

    <!-- Optional. Required for location feature -->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <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_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />

2 服務,廣播,還有key

<!-- 可配置android:process參數將PushService放在其他進程中 -->
        <service
            android:name="cn.jpush.android.service.PushService"
            android:enabled="true"
            android:exported="false" android:process=":pushcore">
            <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>

        <!-- Required SDK核心功能-->
        <receiver
            android:name="cn.jpush.android.service.PushReceiver"
            android:enabled="true" android:exported="false" android:process=":pushcore">
            <intent-filter android:priority="1000">
                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
                <!-- Required 顯示通知欄 -->
                <category android:name="您自己的包名" />
            </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.im.android.helpers.IMReceiver"
            android:enabled="true"
            android:exported="false"/>

        <!-- Required SDK核心功能-->
        <receiver
            android:name="cn.jpush.android.service.AlarmReceiver"
            android:exported="false" />


        <!-- Required since JCore 1.1.7. SDK 核心功能-->
        <provider
            android:name="cn.jpush.android.service.DataProvider"
            android:authorities="您自己的包名.DataProvider"
            android:exported="false" />

	    <!-- Required. For publish channel feature -->
        <!-- JPUSH_CHANNEL 是為了方便開發者統計APK分發渠道。-->
        <!-- 例如: -->
        <!-- 發到 Google Play 的APK可以設置為 google-play; -->
        <!-- 發到其他市場的 APK 可以設置為 xxx-market。 -->
        <!-- 目前這個渠道統計功能的報表還未開放。-->
        <meta-data
            android:name="JPUSH_CHANNEL"
            android:value="developer-default" />
	    <!-- Required. AppKey copied from Portal -->
        <meta-data
            android:name="JPUSH_APPKEY"
            android:value="您自己的Appkey" />

  

  

3 復制libs

將libs中的文件復制到自己項目的app的libs中,並且在jar上單擊右鍵,add as lib

在app 的 build.gradle中的android中增加代碼

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

  

4 編碼

A 初始化按demo的寫法是寫在自定義的Application中,不過我沒用過,這里只要初始化成功就好了,就放在AppCompatActivity中了

//調試模式會輸出信息,方便找錯
 JMessageClient.setDebugMode(true);
 JMessageClient.init(getApplicationContext(), true);

B 登陸

JMessageClient.login("帳號", "密碼", new BasicCallback() {
            @Override
            public void gotResult(int i, String s) { 

            }
        });

C 在需要接收消息的地方注冊消息,然后就可以根據自己的需要去查api文檔了

JMessageClient.registerEventReceiver(this);

//在Activity銷毀時最好注銷掉事件
@Override
    protected void onDestroy() {
        JMessageClient.unRegisterEventReceiver(this);
        super.onDestroy();
    }



//注意需要this中包含回調事件的處理函數
public void onEventMainThread(ChatRoomMessageEvent event) {
         
        List<Message> msgs = event.getMessages();
        for (Message msg : msgs) {
             
        }
    }

//也可以用全局消息方式,demo中有

  

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM