体验个推推送,感受Android推送的魅力

消息推送在android应用中已经不胜枚举,足以体现它的重要性。今天我来和大家一起学习一下目前最主流的推送之一 - 个推推送 。

      1,我们先在个推官网注册一个自己的账号,然后在应用管理里登记自己的应用(应用标识记得填自己项目的packageName),拿到AppID,AppKey,AppSecret,MasterSecret(我们在后面需要用到这些)。

       请见图:

体验个推推送,感受Android推送的魅力_第1张图片

    2,之后我们在接入向导里下载个推的SDK(GETUI_ANDROID_SDK),解压发现API文档,Demo工程,资源文件。

       请见图:

       体验个推推送,感受Android推送的魅力_第2张图片

     3,将资源文件导入我们工程的lib中。 

      请见图:

        体验个推推送,感受Android推送的魅力_第3张图片

         4,在AndroidManifest.xml 中加入声明服务

 
        
         
         
         
        

        
        

        
            
                
                
                
                
            
        
        
            
                
            
        

        
        
        
        

        
            
                
                
                
                
            
        

        
        
        

        
            
                
            
        >
 	    


        
        
        
            
                
                
            
        
       5,加入权限

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

      6,之后我们在MainActivity里启动初始化SDK。

package com.dengyy.pushtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.widget.TextView;

import com.igexin.sdk.PushManager;

public class MainActivity extends Activity {
	public static TextView tView = null;
	public static TextView tLogView = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		
		//初始化SDK
		PushManager.getInstance().initialize(this.getApplicationContext());
		
	}
}
      注意:PushManager.getInstance().initialize(this.getApplicationContext()) 一般在Activity或Service类内调用,可以在Activity的onCreate()方法中调用。不建议在Application继承类中调用。

       

      7,将官方Demo里PushDemoReceiver类复制到自己的项目中

      以下是我加入了一些容易理解的注释的代码:

package com.dengyy.pushtest;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.igexin.sdk.PushConsts;
import com.igexin.sdk.PushManager;

public class PushDemoReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		Bundle bundle = intent.getExtras();
		Log.d("GetuiSdkDemo", "onReceive() action=" + bundle.getInt("action"));
		switch (bundle.getInt(PushConsts.CMD_ACTION)) {

		case PushConsts.GET_MSG_DATA:
			// 获取透传数据
			// String appid = bundle.getString("appid");
			byte[] payload = bundle.getByteArray("payload");

			String taskid = bundle.getString("taskid");
			String messageid = bundle.getString("messageid");

			// smartPush第三方回执调用接口,actionid范围为90000-90999,可根据业务场景执行
			// 透传消息,根据事件id改变事件
			boolean result = PushManager.getInstance().sendFeedbackMessage(
					context, taskid, messageid, 90001);
			
			if(result){
				Intent intentTemp = new Intent(context.getApplicationContext(),ResultActivity.class);
				intentTemp.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); 
				context.getApplicationContext().startActivity(intentTemp);
			}
			
			if (payload != null) {
				String data = new String(payload);

				Log.d("GetuiSdkDemo", "Got Payload:" + data);
				if (MainActivity.tLogView != null)
					MainActivity.tLogView.append(data + "\n");
			}
			break;
		case PushConsts.GET_CLIENTID:
			// 获取ClientID(CID)
			// 第三方应用需要将CID上传到第三方服务器,并且将当前用户帐号和CID进行关联,以便日后通过用户帐号查找CID进行消息推送
			String cid = bundle.getString("clientid");
			if (MainActivity.tView != null)
				MainActivity.tView.setText(cid);
			break;
		case PushConsts.THIRDPART_FEEDBACK:
			/*
			 * String appid = bundle.getString("appid"); String taskid =
			 * bundle.getString("taskid"); String actionid =
			 * bundle.getString("actionid"); String result =
			 * bundle.getString("result"); long timestamp =
			 * bundle.getLong("timestamp");
			 * 
			 * Log.d("GetuiSdkDemo", "appid = " + appid); Log.d("GetuiSdkDemo",
			 * "taskid = " + taskid); Log.d("GetuiSdkDemo", "actionid = " +
			 * actionid); Log.d("GetuiSdkDemo", "result = " + result);
			 * Log.d("GetuiSdkDemo", "timestamp = " + timestamp);
			 */
			break;
		default:
			break;
		}
	}
}
      

      8,到了这里,我们可以开始测试了。让消息飞起来吧!

体验个推推送,感受Android推送的魅力_第4张图片

    我们依次点击,运行结果如下:

体验个推推送,感受Android推送的魅力_第5张图片


     除此之外,我们还可以自定义消息推送,试试看吧



     我的Demo代码可以去这里下载:http://download.csdn.net/detail/dengyanyi11/8668983  或者 https://github.com/toeii/GeTuiPushDemo

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