【Android推送】极光推送

来源:互联网 发布:java soap发送报文 编辑:程序博客网 时间:2024/04/29 21:17


官方相关文档:http://docs.jpush.cn/pages/viewpage.action?pageId=3309821  


一、基本使用说明文档:

1.首先进行接口初始化
 JPushInterface.init(getApplicationContext());    // 初始化 JPush

{
停止和恢复:
停止:
接口定义:public static void stopPush(Context context);
使用:JPushInterface.stopPush(getApplicationContext()); 

调用了本 API 后,JPush 推送服务完全被停止。具体表现为:

  • JPush Service 不在后台运行
  • 收不到推送消息
  • 不能通过 JPushInterface.init 恢复,需要调用resumePush恢复。
  • 极光推送所有的其他 API 调用都无效
恢复:
接口定义:public static void resumePush(Context context);
使用:JPushInterface.resumePush(getApplicationContext());

恢复推送服务。

调用了此 API 后,极光推送完全恢复正常工作。

}


2.注册接收广播
     registerMessageReceiver();  // used for receive msg

     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 {
            @Override
            public 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());
                }
           }
     }

3. 添加Sdk相关权限和功能
    <!-- Required SDK核心功能-->
        <activity
            android:name= "cn.jpush.android.ui.PushActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges= "orientation|keyboardHidden" >
            <intent-filter >
                <action android:name= "cn.jpush.android.ui.PushActivity" />
                <category android:name= "android.intent.category.DEFAULT" />
                <category android:name ="com.jpush.example.app" />
            </intent-filter >
        </activity >
        <!-- Required  SDK核心功能-->
        <service
            android:name= "cn.jpush.android.service.DownloadService"
            android:enabled= "true"
            android:exported= "false" >
        </service >
   
       
        <!-- Required SDK 核心功能-->
        <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 >
       
        <!-- Required SDK核心功能-->
        <receiver
            android:name= "cn.jpush.android.service.PushReceiver"
            android:enabled= "true" >
             <intent-filter android:priority ="1000">
                <action android:name= "cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />    <!--Required  显示通知栏 -->
                <category android:name ="com.jpush.example.app" />
            </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" />
     

4.添加网络等相关权限
    <!-- Required  一些系统要求的权限,如访问网络等-->
    <uses-permission android:name= "com.jpush.example.app.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.SYSTEM_ALERT_WINDOW" />  


二、添加自定义消息

 极光推送包含有通知与自定义消息两种类型的推送。

主要区别:
 通知:主要用于提示用户的目的。应用加上通知功能,有利于提高应用的活跃度。
 自定义消息 :自定义消息不是通知,所以不会被SDK展示到通知栏上。其内容完全由开发者自己定义。自定义消息用于应用的内部业务逻辑,完全与通知栏展示无关。自定义消息用于应用的内部业务逻辑。一条自定义消息推送过来,有可能没有任何界面显示。
相关资料可以参考:
http://docs.jpush.cn/pages/diffpagesbyversion.action?pageId=3309701&originalVersion=4&revisedVersion=11  

主要使用:
1.自定义广播类:

/**
 * 自定义接收器
 *
 * 如果不定义这个 Receiver,则:
 * 1) 默认用户会打开主界面
 * 2) 接收不到自定义消息
 */
public class MyReceiver extends BroadcastReceiver {


}
2.注册广播:
  <!-- User defined.  For test only  用户自定义的广播接收器-->
        <receiver
            android:name= "com.example.jpushdemo.MyReceiver"
            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.jpush.example.app" />
            </intent-filter >
        </receiver >


三、相关设置
1. 设置Tag,Alias
 Alias(别名):为安装了应用程序的用户,取个别名来标识。以后给该用户 Push 消息时,就可以用此别名来指定。每个用户只能指定一个别名。
 Tag (标签):为安装了应用程序的用户,打上标签。其目的主要是方便开发者根据标签,来批量下发 Push 消息。可为每个用户打多个标签。
 相关API和说明:http://docs.jpush.cn/pages/viewpage.action?pageId=557241 
主要设置接口public static void setAliasAndTags(Context context, String alias, Set<String> tags, TagAliasCallback callback)

2.定义通知栏样式:
主要接口:
相关API和说明:http://docs.jpush.cn/pages/viewpage.action?pageId=557243 
public static void setDefaultPushNotificationBuilder(BasicPushNotificationBuilder builder)

public static void setPushNotificationBuilder(Integer notificationBuilderId, BasicPushNotificationBuilder builder)

3.设置推送时间
相关API和说明:http://docs.jpush.cn/pages/viewpage.action?pageId=1343490 


0 0
原创粉丝点击