個推平台API使用經驗

2021-07-10 06:58:42 字數 4150 閱讀 8263

實現推送功能的方案有許多,具體可以看《程式設計師》的一篇文章這裡也詳解了ios與android接受推送的機制不同。

本文主要講的是利用第三方平台來開發個推功能的api,使用的個推平台:

設計:類:

loginuserpojo(使用者類)

notificationpojo(通知類)--屬性見資料庫設計資訊表

資料庫表的設計:user_login(user_id,user_name,password....)

nofitication(notification_id,title,content,createdt,creator_user_id....)

user_device(user_id,client_id,device_token)(ios個推資訊通過device_id傳送,andorid通過client_id傳送)

個推api設計:

1.基本配置資訊類

public class gexinbaseinfo

public class transimissioncontentpojo implements serializable

public void setcontentid(string contentid)

}

3.建立通知資訊的工廠類

public class notitemplatefactory 

//ios

public static apnpayload.dictionaryalertmsg getdictionaryalertmsg(string title, notificationpojo npojo)

4.個推傳送資訊工具類

public class gexinmpushutil 

return targetlist;

}protected igtpush push;

public gexinmpushutil()

public static gexinmpushutil getinstance()

return instance;

}//andorid有通知

public void push(final notificationtemplate notificationtemplate, final listcidlist)

});}

//andorid透傳,無通知

public void push(final transmissiontemplate transmissiontemplate, final listcidlist)

});}

//將使用者id與client_id繫結記錄在個推服務上

public boolean bind(string alias, string cid)

//解綁

public boolean unbind(string alias, string cid)

//ios推送

public void pushapn(final apnpayload.dictionaryalertmsg alertmsg

, final listdevicetokens, string content)

}

邏輯設計:使用者登入andorid攜帶client_id,ios端攜帶device_token,檢查user_device中是否有記錄user_id與 client_id或user_id與device_token的組合,如果沒有插入組合,並且繫結這組資訊

登出登入:

在傳送通知的方法中,加入推送的**:

..............前面的**使用者獲取notificationpojo npojo(通知內容),

listsendusers(傳送的使用者id)

listlistalias = new arraylist<>();

if (sendusers != null && !sendusers.isempty())

}listdevicetokens = new arraylist<>();

listclientids = new arraylist<>();

if (listalias != null && !listalias.isempty() && listalias.size() != 0)

transimissioncontentpojo pojo = new transimissioncontentpojo(transimissioncontentpojo.type_noti);

pojo.setcontentid(notificationpojo.getnotificationid());

notificationtemplate template = notitemplatefactory.producenotifromnoti(notificationpojo);

if (clientids.size() != 0 && !clientids.isempty())

gexinmpushutil.getinstance().push(template, clientids);

apnpayload.dictionaryalertmsg alertmsg = notitemplatefactory.getdictionaryalertmsg(notificationpojo.gettitle()

,notificationpojo);

if (devicetokens.size() != 0 && !devicetokens.isempty())

gexinmpushutil.getinstance().pushapn(alertmsg, devicetokens,new gson().tojson(pojo));

.................這樣就可以將推送資訊傳送出去了

其中selectdevicetokens(listalias)的mybatis**如下:

(使用mybatis的sql如下

如果動態使用平台提供的API

開發工具的安裝目錄下會有include,lib目錄,這兩個目錄下存放著os提供的api的宣告以及經過封裝的一些類以方便程式設計師開發,封裝的類提供的服務大多通過呼叫os的api來實現,而真正提供os的api實現的卻在乙個個dll中。我們想要使用這些api或經過封裝的類的服務時,一般做法如下 test...

c 跨平台技術學習 三 使用標準API

posix.1 api定義了大量的函式,在各方面的功能都很豐富,下面對其進行介紹 它是乙份描述了at t unix system v作業系統的文件,與posix.1保持一致,是它的乙個超集。svid由基礎系統和擴充套件定義,它只定義了c程式設計介面,沒有定義任何使用者級別的命令,基礎系統更進一步細分...

日均數十億訪問量!解讀個推API閘道器高能演進

近日,個推服務端技術專家李白受邀參與segmentfault d day 線上技術直播活動,與來自頭部網際網路企業的後端技術專家們共探 後端架構演進之路 李白以 api閘道器演進之路 為主題,分享了個推基於golang進行api閘道器建設的實踐經驗和深度思考。以下為李白演講乾貨整理 api閘道器之源...