极光推送:eclipse手动集成步骤

以下仅作为自己的工作笔记。

 

// 此处以JPush 3.0.9 版本为例。

// 此处以JCore 1.1.7 版本为例。

 

1.将下载下来的官方文档sdk解压,然后复制jar包和.so文件及drawable-hdpi, layout, values文件夹中的资源文件。

 

1.1 。 将libs中jcore-android-1.1.7.jar和jpush-android-3.0.9.jar包及所有.so文件复制粘贴至主工程的libs中。(记得将jar包Build Path)

 

sdk    libs中jar包及.so文件

 

复制粘贴后的主工程libs

 

1.2.将res/ 中drawable-hdpi,layout, values文件夹中的资源文件全部复制至到你的主工程中 res/ 对应同名的目录下。

 

2.根据 SDK 压缩包里的 AndroidManifest.xml 样例文件,来配置你的应用程序项目的 AndroidManifest.xml 。

 

2.1  将如下权限添加到自己的AndroidManifest.xml中

 

android:name="您应用的包名.permission.JPUSH_MESSAGE"

android:protectionLevel="signature" />

 

 

 

2.2 将如下核心功能添加至你的application中。

<application

        android:name="自己的Application名字"

        android:allowBackup="true"

        android:icon="@drawable/ic_caijing"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

 

android:name="cn.jpush.android.service.PushService"

android:enabled="true"

android:exported="false" >

 

 

android:authorities="您应用的包名.DataProvider"

android:name="cn.jpush.android.service.DataProvider"

android:exported="true"

/>

 

android:name="cn.jpush.android.service.DaemonService"

android:enabled="true"

android:exported="true">

 

android:name="cn.jpush.android.service.PushReceiver"

android:enabled="true" >

 

android:name="cn.jpush.android.ui.PushActivity"

android:configChanges="orientation|keyboardHidden"

android:theme="@android:style/Theme.NoTitleBar"

android:exported="false" >

android:name="cn.jpush.android.ui.PopWinActivity"

android:configChanges="orientation|keyboardHidden"

android:exported="false"

android:theme="@style/MyDialogStyle">

 

android:name="cn.jpush.android.service.DownloadService"

android:enabled="true"

android:exported="false" >

 

 

android:name="您自己定义的Receiver"

android:enabled="true">

 

 

 

 application>

 

 

 

 

 

3.初始化SDK

 

public class MyAplication extends Application {

     

        // private static ACache mCache;

     @Override

     public void onCreate() {

           // TODO Auto-generated method stub

           super.onCreate();

        

        //Jpush初始化

        JPushInterface.setDebugMode(true);

        JPushInterface.init(this);

       

      

     }

     

 

}

 

4.设置标签与别名(在登录成功后调用如下方法)

 

4.1

    /**

     * 设置标签与别名

     */

     @SuppressWarnings("deprecation")

     private void setTagAndAlias() {

           // TODO Auto-generated method stub

                /**

         *这里设置了别名,在这里获取的用户登录的信息

         *并且此时已经获取了用户的userId,然后就可以用用户的userId来设置别名了

         **/

         Set tags = new HashSet();

        //这里可以设置你要推送的人,一般是用户uid 不为空在设置进去 可同时添加多个

        if (!TextUtils.isEmpty(userId)){

           tags.add(userId);//设置tag

           }

        //上下文、别名【Sting行】、标签【Set型】、回调

        JPushInterface.setAliasAndTags(context, userId, tags,

                mAliasCallback);

     

     }

 

4.2

/**

      * 设置标签与别名的回调

      */

     @SuppressWarnings("deprecation")

     private final TagAliasCallback mAliasCallback = new TagAliasCallback() {

        @Override

        public void gotResult(int code, String alias, Set tags) {

            String logs;

            switch (code) {

                case 0:

                  

                    logs = "Set tag and alias success极光推送别名设置成功";

                    Log.e("TAG", logs);

                    break;

                case 6002:

               

                    logs = "Failed to set alias and tags due to timeout. Try again after 60s.极光推送别名设置失败,60秒后重试";

                    Log.e("TAG", logs);

                    break;

                default:

                    logs = "极光推送设置失败,Failed with errorCode = " + code;

                    Log.e("TAG", logs);

                    break;

            }

        }

    };

 

4.3(当用户退出登入时,调用如下方法

 

/**

     * 取消设置标签与别名

     */

     @SuppressWarnings("deprecation")

     private void cancleTagAndAlias() {

           // TODO Auto-generated method stub

           //TODO 上下文、别名、标签、回调  退出后空数组与空字符串取消之前的设置

        Set tags = new HashSet();

        JPushInterface.setAliasAndTags(context, "", tags, mAliasCallback);

           

     }

 

 

 

5.用户自定义receiver

 

public class MyReceiver extends BroadcastReceiver {

     private static final String TAG = "JPush";

     @Override

     public void onReceive(Context context, Intent intent) {

           

        Bundle bundle = intent.getExtras();

           Log.d(TAG, "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));

           

        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {

            String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);

            Log.d(TAG, "[MyReceiver] 接收Registration Id : " + regId);

           

                    

        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {

           Log.d(TAG, "[MyReceiver] 接收到推送下来的自定义消息: " +                 bundle.getString(JPushInterface.EXTRA_MESSAGE));

           

       

        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {

            Log.d(TAG, "[MyReceiver] 接收到极光推送默认的通知");

            int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);

            Log.d(TAG, "[MyReceiver] 接收到极光推送默认的通知的ID: " + notifactionId);

            receivingNotification(context,bundle);

        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {

            Log.d(TAG, "[MyReceiver] 用户点击打开了通知");

            openNotification(context,bundle);

           

        } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {

            Log.d(TAG, "[MyReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));

            //在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码,比如打开新的Activity, 打开一个网页等..

           

        }

 

        else {

           Log.d(TAG, "[MyReceiver] Unhandled intent - " + intent.getAction());

        }

     }

     // 打印所有的 intent extra 数据

     @SuppressLint("NewApi")

     private static String printBundle(Bundle bundle) {

           StringBuilder sb = new StringBuilder();

           for (String key : bundle.keySet()) {

                if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {

                     sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));

                }

 

                else if (key.equals(JPushInterface.EXTRA_EXTRA)) {

                     if (bundle.getString(JPushInterface.EXTRA_EXTRA).isEmpty()) {

                           Log.i(TAG, "This message has no Extra data");

                           continue;

                     }

                     try {

                           JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));

                           Iterator it =  json.keys();

                           while (it.hasNext()) {

                                String myKey = it.next().toString();

                                sb.append("\nkey:" + key + ", value: [" +

                                           myKey + " - " +json.optString(myKey) + "]");

                           }

                     } catch (JSONException e) {

                           Log.e(TAG, "Get message extra JSON error!");

                     }

                } else {

                     sb.append("\nkey:" + key + ", value:" + bundle.getString(key));

                }

           }

           return sb.toString();

     }

     

     

      private void receivingNotification(Context context, Bundle bundle){

             String title = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);

             Log.i(TAG, " title : " + title);

             String message = bundle.getString(JPushInterface.EXTRA_ALERT);

             Log.i(TAG, "message : " + message);

             String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);

             Log.i(TAG, "extras : " + extras);

          

         }

     

     

      private void openNotification(Context context, Bundle bundle){

             String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);

             String myValue = "";

             try {

                 JSONObject extrasJson = new JSONObject(extras);

                 //得到后台给的参数所对应的值。

                 myValue = extrasJson.optString("extraParm");

                 Log.i("extraParm---", myValue);

             } catch (Exception e) {

                Log.w(TAG, "Unexpected: extras is not a valid json", e);

                 return;

             }

             //根据值判断跳转页面

             if ("1".equals(myValue)) {

                 Intent mIntent = new Intent(context, StuSleepManagementActivity.class);

                 mIntent.putExtras(bundle);

                 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                 context.startActivity(mIntent);

             }

             else if ("2".equals(myValue)){

                 Intent mIntent = new Intent(context, NewSleepFacultyQueryActivity.class);

                 mIntent.putExtras(bundle);

                 mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                 context.startActivity(mIntent);

             }

         }

}

 

 

 

你可能感兴趣的:(Android笔记)