1. 極光推送總結
應用場景:在我們的項目中我們用的是創建視頻會議和預警消息通知推送這兩種情況,首先創建視頻會議和中途邀請人參加會議我採用的是自定義推送消息,因為此應用場景傳遞的參數比較多,在推送過去之後android和ios可以很方便的將參數傳遞過去,但是我們考慮到邀請的所有人都在登錄狀態的時候才可以創建會議房間,我們採用的是騰訊視頻會議的sdk,因為我們採用的是別名推送,當用戶在登錄的時候安卓端將用戶uuid設置為別名,退出時取消別名,我在服務端根據傳遞過來的uuid利用別名查詢registration_ids的數組大小是否為空判斷當前用戶是否設置別名,當邀請的所有人都設置了別名之後我才調用創建會議房間的介面。而預警消息推送我採用的是通知推送,當氣象預警觸發的時候我會採用通知推送的方式推送給app,這種方式比較簡單。
極光推送是給app推送消息的,我們首先需要在服務端集成maven依賴
<!-- 極光推送 -->
<groupId>cn.jpush.api
<artifactId>jpush-client
<version>3.2.3
</dependency>
接著我們需要了解極光推送有哪些推送方式,對於安卓和ios都適用的情況,我在項目中使用的是別名推送alias,(還有標簽推送tag),推送方式又分為通知推送和自定義推送,通知推送能夠顯示在手機提示框中,而自定義推送卻不能,我看安卓他們做的能跟微信視頻一樣的彈出一個會話框,看著挺不錯的,這跟微信不同的是可以邀請多個,之前用阿里雲的好像只能一對一,所以才換成騰訊視頻會議的,好了,廢話不多說,上我寫的一個工具類,
package com.jpxx.homepage.homePage.service.utils;
import cn.jpush.api.JPushClient;
import cn.jpush.api.push.PushResult;
import cn.jpush.api.push.model.Options;
import cn.jpush.api.push.model.Platform;
import cn.jpush.api.push.model.PushPayload;
import cn.jpush.api.push.model.audience.Audience;
import cn.jpush.api.push.model.notification.Notification;
import cn.jpush.api.push.model.Message;
import cn.jpush.api.push.model.PushPayload.Builder;
public class SendMessageUtils {
private static StringAppKey="8a7880c6fb81ad494b224078";
/**
* JPush MasterSecret 極光推送平台生成的密鑰
*/
private static StringMasterSecret="c0fc675c4c48f9bf35269cf4";
//兩個參數分別填寫你申請的masterSecret和appKey
private static JPushClientjPushClient=new JPushClient(MasterSecret,AppKey);
/**
* 通知推送
* 備註:推送方式不為空時,推送的值也不能為空;推送方式為空時,推送值不做要求
* @param type 推送方式:1、「tag」標簽推送,2、「alias」別名推送
* @param value 推送的標簽或別名值
* @param alert 推送的內容
*/
public static StringpushNotice(String type,String title,String value,String alert,int roomId,String MessageType,String name,String promoterAdavter,String meetingTitle,String sig){
Builder builder= PushPayload.newBuilder();
builder.setPlatform(Platform.all());//設置接受的平台,all為所有平台,包括安卓、ios、和微軟的
//設置如果用戶不在線、離線消息保存的時間
Options options=Options.sendno();
options.setTimeToLive(86400l); //設置為86400為保存一天,如果不設置默認也是保存一天
builder.setOptions(options);
builder.setMessage(Message.newBuilder()
.setMsgContent(value)
.setTitle(title)
.addExtra("roomId",roomId)
.addExtra("MessageType",MessageType)
.addExtra("name",name)
.addExtra("promoterAdavter",promoterAdavter)
.addExtra("meetingTitle",meetingTitle)
.addExtra("userSig",sig)
.build());
//設置推送方式
if(type.equals("alias")){
builder.setAudience(Audience.alias(value));//根據別名推送
}else if(type.equals("tag")){
builder.setAudience(Audience.tag(value));//根據標簽推送
}else{
builder.setAudience(Audience.all());//Audience設置為all,說明採用廣播方式推送,所有用戶都可以接收到
}
//設置為採用通知的方式發送消息
builder.setNotification(Notification.alert(alert));
PushPayload pushPayload=builder.build();
System.out.println("ggggggg"+pushPayload);
try{
//進行推送,實際推送就在這一步
//System.out.println("zzzzzzzzz "+jPushClient.sendPush(pushPayload));
PushResult pushResult=jPushClient.sendPush(pushPayload);
return "success";
}catch(Exception e){
System.out.println("異常 "+e);
e.printStackTrace();
return "fail";
}
}
/**
* 自定義消息推送
* 備註:推送方式不為空時,推送的值也不能為空;推送方式為空時,推送值不做要求
* @param type 推送方式:1、「tag」標簽推送,2、「alias」別名推送
* @param value 推送的標簽或別名值
* @param alert 推送的內容
*/
public static StringpushMsg(String type,String title,String value,String alert,int roomId,String MessageType,String name,String promoterAdavter,String meetingTitle,String sig){
Builder builder= PushPayload.newBuilder();
builder.setPlatform(Platform.all());//設置接受的平台
if(type.equals("alias")){
builder.setAudience(Audience.alias(value));//別名推送
}else if(type.equals("tag")){
builder.setAudience(Audience.tag(value));//標簽推送
}else{
builder.setAudience(Audience.all());//Audience設置為all,說明採用廣播方式推送,所有用戶都可以接收到
}
Message.Builder newBuilder=Message.newBuilder();
newBuilder.setMsgContent(alert);//消息內容
newBuilder.setTitle(title);
newBuilder.addExtra("roomId",roomId);
newBuilder.addExtra("MessageType",MessageType);
newBuilder.addExtra("name",name);
newBuilder.addExtra("promoterAdavter",promoterAdavter);
newBuilder.addExtra("meetingTitle",meetingTitle);
newBuilder.addExtra("userSig",sig);
Message message=newBuilder.build();
builder.setMessage(message);
PushPayload pushPayload=builder.build();
try{
PushResult pushResult=jPushClient.sendPush(pushPayload);
System.out.println(pushResult.isResultOK());
return "success";
}catch(Exception e){
e.printStackTrace();
return "fail";
}
}
public static void main(String[] args) {
//給標簽為kefu的用戶進行消息推送
//SendMessageUtils.pushMsg("alias","標題","","你有新的任務,請及時處理",111,"meetingType","name","avater","meetingTitle","");
//sendNotificationWirhAlias_Ios("zzzzzzzzzzzz","uuid");
//String result = SendMessageUtils.pushNotice("alias","標題","","你有新的任務,請及時處理",111,"meetingType","name","avater","meetingTitle","");
//System.out.println("返回結果"+result);
/*String result = SendMessageUtils.pushNotice("alias","預警標題","","dddd",0,"warnType","","","",""); //userDto.getUuId()
System.out.println("result "+result);*/
//根據uuid查詢別名信息是否存在
String result = HttpRequestUtil.JGUtil("https://device.jpush.cn/v3/aliases/", "8a7880c6fb81ad494b224078","c0fc675c4c48f9bf35269cf4");//get請求
//String result = HttpRequestUtil.interfaceUtil("http://172.16.2.207:6606/daibancontroller.do?getDbxxNum", "","ydswtapp","eyJhbGciOiJIUzI1NiJ9..Cy3-");//get請求
System.out.println("result "+result);
}
}
因為我要根據前端傳來的uuid判斷當前用戶是否登錄,所以我對http方法進行了稍微改裝,根據極光的api文檔(文檔寫的不是很好找),以下是我改裝的
/**
*
* 極光專用
*/
public static StringJGUtil(String path,String appKey,String masterSecret) {
String str ="";
try {
URL url =new URL(path);
//打開和url之間的連接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
PrintWriter out =null;
/**設置URLConnection的參數和普通的請求屬性****start***/
String base64String=appKey+":"+masterSecret;
System.out.println("拼接的 "+base64String);
String str2=base64String;
String encode =new BASE64Encoder().encode(str2.getBytes());
System.out.println("編碼過後:"+encode);
String auth ="Basic "+encode;
System.out.println("最終的 "+auth);
conn.setRequestProperty("Authorization", auth);
conn.setRequestProperty("Content-Type", "application/json");
//conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
/**設置URLConnection的參數和普通的請求屬性****end***/
//設置是否向httpUrlConnection輸出,設置是否從httpUrlConnection讀入,此外發送post請求必須設置這兩個
//最常用的Http請求無非是get和post,get請求可以獲取靜態頁面,也可以把參數放在URL字串後面,傳遞給servlet,
//post與get的 不同之處在於post的參數不是放在URL字串裡面,而是放在http請求的正文內。
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("GET");//GET和POST必須全大寫
/**GET方法請求*****start*/
/**
* 如果只是發送GET方式請求,使用connet方法建立和遠程資源之間的實際連接即可;
* 如果發送POST方式的請求,需要獲取URLConnection實例對應的輸出流來發送請求參數。
* */
conn.connect();
/**GET方法請求*****end*/
/***POST方法請求****start*/
/*out = new PrintWriter(conn.getOutputStream());//獲取URLConnection對象對應的輸出流 out.print(data);//發送請求參數即數據 out.flush();//緩沖數據*/
/***POST方法請求****end*/
//獲取URLConnection對象對應的輸入流
InputStream is = conn.getInputStream();
//構造一個字元流緩存
BufferedReader br =new BufferedReader(new InputStreamReader(is));
while ((str = br.readLine()) !=null) {
str =new String(str.getBytes(), "UTF-8");//解決中文亂碼問題
System.out.println("wwwww"+str);
return str;
}
//關閉流
is.close();
//斷開連接,最好寫上,disconnect是在底層tcp socket鏈接空閑時才切斷。如果正在被其他線程使用就不切斷。
//固定多線程的話,如果不disconnect,鏈接會增多,直到收發不出信息。寫上disconnect後正常一些。
conn.disconnect();
System.out.println("完整結束");
}catch (Exception e) {
e.printStackTrace();
}
return "success";
}
好了,以後再寫類似的就會寫了,這里附上極光文檔的鏈接 https://docs.jiguang.cn/jpush/server/push/server_overview/
2. 極光推送的服務的安全性,有哪些保障與方案
極光推送的服務的安全性,有以下保障方案:
一、消息審核+黑詞檢測,內容准確「雙保險」
極光推送安全包提供消息審核及黑詞檢測功能,運營人員可以提前配置詞彙黑名單,在消息發送時,系統會檢測消息的標題及內容是否含有黑名單中的「黑詞」,從而及時提醒運營人員修改相關內容,避免錯發測試消息或誤發敏感詞彙。
二、消息一鍵無痕撤回,拒絕推送事故
搭載極光推送安全包,在推送下發後,若運營人員發現推送內容有誤,可立即進行消息撤回操作,還未下發的消息將停止下發,已送至客戶端但用戶還未點擊的消息將無痕消失,幫助 APP有效降低因消息誤發造成的用戶流失、信任降低等不利影響。
三、杜絕重復推送,用戶打擾少一點,留存自然多一點
對於用戶體量大的企業來說,極小的失誤也會被無限放大,一條同樣的消息在一天內重復發送給同一用戶,勢必會造成打擾,且嚴重影響用戶的使用體驗。而極光可以從推送服務端檢測同一個 UID 是否多次下發標題、內容相同的消息,有效避免消息重復推送,降低用戶流失。
四、IP白名單+消息國密加密,為消息安全站崗
極光推送可為消息內容進行國密加密,極大提高了消息傳輸的安全性,降低信息泄漏風險。
極光會校驗推送API調用的IP和登錄web portal後台的IP是否在白名單內,符合白名單的 IP 才允許進行登錄、調用等相關操作,進一步提高賬戶安全性,杜絕因運營人員賬號密碼意外泄露或被不法人員盜取而推送不當消息的情況,特別適用於金融保險、政府政務等對推送安全要求極高的 APP。
3. 極光推送服務怎麼開啟
開啟極光推送服務使用過程中的配置步驟:1、去極光官網注冊一個賬號,並且新建一個項目。注意包名。然後下載android的例子工程。2、自己在本地創建一個和剛才一樣包名的工程。3、相應的代碼和資料。包括 manifest.xml的一些許可權。剔除一些自己不需要的然後復制進來即可。
JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。
極光先後推出了極光即時通訊雲(JMessage)、極光簡訊服務(JSMS)、極光統計(JAnalytics)、極光分享(JShare)等開發者服務。極光IM(JMessage) 致力於幫助app解決應用內聊天及跨應用聊天問題,快速集成SDK,提供穩定可靠的APP用戶間聊天功能。
至2015年12月初,極光推送已經覆蓋了近10億Android、IOS終端,30多萬款APP應用,服務總用戶數超過30億,每天消息推送量達5億多條,已成為移動應用數據平台。
4. 極光推送sdk好用嗎
極光推送很好用的,極光JPush 提供四種消息形式:通知,自定義消息,富媒體和本地通知。1、通知。或者說 Push Notification,即指在手機的通知欄(狀態欄)上會顯示的一條通知信息。 通知主要用來達到提示用戶的目的,應用於新聞內容、促銷活動、產品信息、版本更新提醒、訂單狀態提醒等多種場景。
2、自定義消息。自定義消息不是通知,所以不會被 SDK 展示到通知欄上。其內容完全由開發者自己定義。 自定義消息主要用於應用的內部業務邏輯。一條自定義消息推送過來,有可能沒有任何界面顯示。
3、富媒體。JPush 支持開發者發送圖文並茂的通知,從而更好的傳達信息,帶來更豐富的用戶互動。 JPush 提供了 5 種模板,開發者可以通過填充模板的內容,發送 landing page、彈窗、信息流形式的富媒體通知。 開發者還可以直接通過 URL 發送預先編輯好的頁面。
好的推送可以給使用者帶來舒適的體驗和無限的機遇,極光推送是個不錯的選擇。JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。
5. web中的消息推送和實時通知怎麼做
Web端 常見的消息推送實際上大多數都是模擬推送,之所以是模擬推送,是因為這種實現並不是伺服器主動推送,本質依舊是客戶端發起請求,服務端返回數據,起主動作用的是客戶端。短輪詢:實現上最簡單的一種模擬推送方法,原理就是客戶端不斷地向服務端發請求,如果服務端數據有更新,服務端就把數據發送回來,客戶端就能接收到新數據了。
消息推送可以試一試極光。Push 支持開發者直接通過極光推送的控制台,通過地圖圈選一個經緯度范圍,創建一個虛擬的柵欄圍出一個虛擬地理邊界,當開發者APP的用戶進入、離開這個區域,或在該區域內活動時,設備APP可以自動接收通知,實現准確的消息推送,把有用的信息,在合適的地方,推送給合適的人。
6. 極光推送怎麼實現的
極光推送就是第三方平台推送消息,匹配多端推送,可以支持的設備有Android、ios、winphone,具體操作步驟如下:一、首先注冊極光服務賬號,登錄後進入應用設置,記錄AppKey和Master Secret,java後台開發者要用到。
二、點擊「推送設置」:設置Android和iOS:Android應用包名自己定義,下載demo,Android開發人員查看集成指南,將sdk集成到項目中。iOS應用包名自己定義,下載demo,iOS開發人員查看集成指南,將sdk集成到項目中。
?
三、Android和iOS分別在自己的業務內調用java提供的後台介面:用戶和極光id綁定介面。
綁定成功後發送通知,模擬發一條通知:預估人數是1,這是極光後台返回的值。
?
四、發送後就顯示推送歷史。
至2015年12月初,極光推送已經覆蓋了近10億Android、IOS終端,30多萬款APP應用,服務總用戶數超過30億,每天消息推送量達5億多條,已成為移動應用數據平台。開放注冊,免費使用;伺服器端推送。富媒體推送功能,雲端部署伺服器超過2000台。
JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。
7. 有用過極光推送服務產品的用戶嗎他們的消息推送服務有什麼優勢,消息推送服務安全性高
極光推送有如下優勢:1、多重保障機制:消息審核、黑詞管理、無痕撤回等多重安全保障機制,確保每一條消息都准確嚴謹。
2、高規格信息加密:消息採用國密加密演算法,從技術底層打好安全基礎。
3、貼心的功能體驗:同時支持 API 和 Web 控制台進行相關安全功能操作。
4、7*24小時專人專線服務:專屬安全團隊支持,24 小時隨時響應,免除後顧之憂。
極光推送安全包為金融、新聞、政務及其他對推送安全要求極高的客戶提供安全嚴謹、穩定可靠的消息推送解決方案。
極光多種消息類型,開發者可以輕松地通過極光發送各個移動平台的系統通知,還可以在控制台編輯多種富文本展示模板; 極光還提供自定義消息的透傳,客戶端接到消息內容後根據自己的邏輯自由處理。
8. 應用在國外,是否能收到極光推送的服務,及時性怎樣
極光推送的業務在國外是可以正常使用的,只要當地對於網路沒有訪問限制。極光推送的使用者中有歐洲,美國和東南亞,韓國日本等地區的用戶。
而且極光推送為了更好服務東南亞和香港,台灣等地區專門在香港部署了伺服器,我們也會隨著其他區域的用戶數增長在當地部署伺服器。
JPush是經過考驗的大規模APP推送平台,每天推送消息數超過5億條。 開發者集成SDK後,可以通過調用API推送消息。同時,JPush提供可視化的web端控制台發送通知,統計分析推送效果。 JPush全面支持 Android, iOS, Winphone 三大手機平台。
JPush除了有著完善的控制台外,還提供了服務端的介面,方便開發者的伺服器調用,方便開發者對於應用管理、整合即通過應用伺服器極光伺服器推送伺服器用戶設備,簡化了伺服器端的開發強度,也方便運營期間發送推送消息的流程。
9. 極光推送 可以推送根據某一個具體的用戶進行推送嗎
JPush極光推送可以只推送給指定的那部分android用戶,通過使用標簽,別名,Registration ID 和用戶分群,開發者可以向特定的一個或多個用戶推送消息。JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。
開發者可以輕松地通過極光發送各個移動平台的系統通知,還可以在控制台編輯多種富文本展示模板; 極光還提供自定義消息的透傳,客戶端接到消息內容後根據自己的邏輯自由處理。
截止到2020年12月份,極光已經為約 169.8萬 款移動應用提供服務,其開發工具包(SDK)安裝量累計467億,月度獨立活躍設備 14億部
10. 極光推送服務是什麼,極光推送怎麼樣
極光推送服務是一款免費的第三方推送消息的平台。極光推送從整體來說還不錯,具有以下優勢:1、開放注冊,免費向所有的開發者開放使用。
2、極光推送 - JPush SDK
JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。
3、開發者可以輕松地通過極光發送各個移動平台的系統通知,還可以在控制台編輯多種富文本展示模板; 極光還提供自定義消息的透傳,客戶端接到消息內容後根據自己的邏輯自由處理。
4、7*24小時專人專線服務:專屬安全團隊支持,24 小時隨時響應,免除後顧之憂。
所以從以上來看,極光是一個不錯的選擇,深圳市和訊華谷信息技術有限公司(極光 Aurora Mobile,納斯達克股票代碼:JG)成立於2011年,是中國領先的開發者服務提供商,專注於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。
同時,極光的行業應用已經拓展至市場洞察、金融風控與商業地理服務,助力各行各業優化決策、提升效率。