
正文
Android端 配置极光推送
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
由于业务须要,androidclient须要加推送。原来採用的百度推送。可是小米手机有时候收不到。后来换成了极光推送,极光的话全部设备都能收到推送,可是在高峰的时候会推迟。博主说的免费版的,收费的没用过,也不错评论
博主用的android studio开发的。.so文件放置的位置啥的可能和eclipse有点不同,感觉用android studio开发jni一类的真的好费劲。博主如今老腻歪了,唉,废话不多说,进入正题:
首先,去极光推送官网注冊一系列流程,只是貌似不用认证,老长时间注冊的了,忘得差点儿相同了,然后左側有加入新应用

開始创建应用,注冊的时候必须把包名写对,能够直接把清单文件里的包名复制就可了,当然,android studio一套代码开发多个包的话例外

这里有两个key,第一个的话是androidclient须要配置的,然后就是后台。后台两个都须要,注意的是包名一旦定义便不能更改,定义的话极光推送会自己校验的,给出对应的提示。告诉能不能使用。
再有就是将对应的配置到自己的app中。博主这里直接下载了对应的demo。进行配置,这里的话能够先执行demo。測试一下
由于这个demo的包名和自己的一样,所以仅仅能存在一个demo,好,如今開始配置自己的demo
第一步须要创建两个包,以下用箭头标注了

这里吐槽一下,假设用android studio建立的project更改过名字的话一般配置的话都不会配置成功的,貌似是由于c语言是弱语言的原因,所以说争取不要配置改过名的project。
然后是配置lib包

再有就是配置清单文件,最重要的是前面那几行,还有就是service的intent的详细名称

这个千万不要忘了,博主第一次没注意就给忘了,收不到推送
再有就是配置服务,看过腾讯的飞鸽,感觉飞鸽的比极光要好点,能让服务的存活率更高。由于飞鸽的不仅用到了服务还用到了广播重新启动服务,而极光的只用来接收推送消息有时间大家能够了解一下

名字和路径都要相应,再有就是须要初始化的

还有就是一个util。剩下的activity能够依据须要自定义就能够了

还有就是xml文件,考进去就能够了
反过来看一下极光的demo

剩下的就是须要初始化,就是入口的activity。或者fragmentactivity,否则的话后台没有办法统计
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | packageimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportimportpublic extendsimplements private private private private 0; private private 0; private 0; private 0; @Override public super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); JPushInterface.init(this); init(); registerMessageReceiver(); // if setTarget(); setContentView(R.layout.activity_guide); initViewPager(); initDots(); }else Intentnew it.setClass(this,class); startActivity(it); finish(); } } // private JPushInterface.init(getApplicationContext()); } @Override protected isForegroundtrue; super.onResume(); JPushInterface.onResume(this); } @Override protected isForegroundfalse; super.onPause(); JPushInterface.onPause(this); } @Override protected unregisterReceiver(mMessageReceiver); super.onDestroy(); } //for private public "cn.edu.sjzc.student.broadcasterceiver.MESSAGE_RECEIVED_ACTION"; public "title"; public "message"; public "extras"; public mMessageReceivernew IntentFilternew filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); filter.addAction(MESSAGE_RECEIVED_ACTION); registerReceiver(mMessageReceiver, } public extends @Override public if String String StringBuildernew showMsg.append(KEY_MESSAGE" "\n"); if showMsg.append(KEY_EXTRAS" "\n"); }// } } } /** */ private SharedPreferences"fs", String"isfs","0"); if"0")) return; }else return; } } /** */ private SharedPreferences"fs", Editor editor.putString("isfs","no"); editor.commit(); } private viewPager listViewnew LayoutInflater listView.add(inflater.inflate(R.layout.lay1,null)); listView.add(inflater.inflate(R.layout.lay2,null)); listView.add(inflater.inflate(R.layout.lay3,null)); listView.add(inflater.inflate(R.layout.lay4,null)); forint0; View view.setOnTouchListener(this); } viewPager.setAdapter(new viewPager.setOnPageChangeListener(new } private listDotsnew listDots.add(findViewById(R.id.dot01)); listDots.add(findViewById(R.id.dot02)); listDots.add(findViewById(R.id.dot03)); listDots.add(findViewById(R.id.dot04)); } public implements public int // } public intfloatint // } public int ((View) .setBackgroundResource(R.drawable.dot_focused); ((View) .setBackgroundResource(R.drawable.dot_normal); oldPosition thePos System.out.println(thePos); } } public extends private public this.list } @Override public int // ((ViewPager) } @Override public // } @Override public // return } @Override publicint ((ViewPager)0); return } @Override public // return } @Override public // } @Override public // return; } @Override public // } } public if3) count++; if1) firstTime }else secondTime if0) Intentnew it.setClass(this,class); startActivity(it); finish(); } count0; firstTime0; secondTime0; } } return; }}</view></view></view></view></view></view> |
最重要的是要放在对应的生命周期中。假设不是在第一配置的话配送会收到可是后台却不能统计,然后须要进行測试
一个是通知栏。还有一个是log打印
收到的推送用户能够自己定义显示
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | packageimportimportimportimportimportimportimportimportimportimportimportpublic extends private private private @Override protected super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); initView(); initData(); } private TextViewnewthis); tv.setText("用户自己定义打开的Activity"); Intent ifnull Bundle title content } jpush_back jpush_back.setOnClickListener(this); jpush_title jpush_content } private SharedPreferencesthis.getSharedPreferences(UserApplication.USER_DATA,0); number""); jpush_title.setText(title); jpush_content.setText(content); } @Override public super.onClick(v); switch case finish(); break; } }} |
基本这样就配置成功了,剩下的深入的能够看极光的api。写的非常好非常具体





