zoukankan      html  css  js  c++  java
  • 极光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中有
    

      

      

      

  • 相关阅读:
    jq 切换功能toggle
    打开控制台F12弹出弹窗
    CSS解决无空格太长的字母,数字不会自动换行的问题
    微信公众号页面无法唤起输入框
    别人遇到的两条前端面试题
    在HTML打开已安装的App,未安装跳转到对应的下载链接
    promise的使用
    特殊的json对象转数组,最合成新的json数据
    Rem兼容知多少?
    parseInt的结果看不懂,请看我分析
  • 原文地址:https://www.cnblogs.com/meieiem/p/9263051.html
Copyright © 2011-2022 走看看