遇到問題
app集成了極光推送。除了推送消息之外還需要實(shí)現(xiàn)點(diǎn)擊通知之后跳轉(zhuǎn)到指定模塊褐荷。在按照激光的文檔完成配置之后勾效,出現(xiàn)了幾個(gè)問題。
1.在app被關(guān)閉的時(shí)候后诚卸,Android端無法正常收到推送葵第。需要啟動(dòng)app之后才會(huì)接收到推送消息『夏纾或是app在啟動(dòng)的情況下,也可正常接收到推送消息缀台。ios端沒有這個(gè)問題棠赛,無論app是否啟動(dòng)的狀態(tài),都可以收到推送。
2.雖說ios在app沒有啟動(dòng)的時(shí)候睛约,可以收到推送鼎俘,但是卻無法讀取到我在推送的時(shí)候添加的附加參數(shù),導(dǎo)致無法完成跳轉(zhuǎn)到指定模塊的功能辩涝。
3.第1個(gè)問題贸伐,app關(guān)閉后無法接收到推送,后來通過集成廠商通道的方式解決了怔揩,但是卻和ios端一樣捉邢,雖然收到了,但是無法獲取到附加參數(shù)商膊。
如果你也是這三種情況的話伏伐,接著往下看。
iOS端解決
先來說ios端:經(jīng)過查閱文檔晕拆,發(fā)現(xiàn)極光推送插件有個(gè)方法是getLaunchAppNotification() 他的方法簽名就已經(jīng)說明這個(gè)問題了藐翎。
/// 點(diǎn)擊推送啟動(dòng)應(yīng)用的時(shí)候原生會(huì)將該 notification 緩存起來,該方法用于獲取緩存 notification
? /// 注意:notification 可能是 remoteNotification 和 localNotification实幕,兩種推送字段不一樣吝镣。
? /// 如果不是通過點(diǎn)擊推送啟動(dòng)應(yīng)用,比如點(diǎn)擊應(yīng)用 icon 直接啟動(dòng)應(yīng)用昆庇,notification 會(huì)返回 @{}赤惊。
也就是說,點(diǎn)擊之后可以調(diào)用這個(gè)方法獲取到緩存的通知
final JPush jpush = JPush();
jpush.getLaunchAppNotification()
這就可以獲取到的就是推送的時(shí)候附加的參數(shù)凰锡,后面就解析使用就可以了未舟。
Android端解決
android有點(diǎn)復(fù)雜,沒有發(fā)現(xiàn)有現(xiàn)成的方法掂为。后來是借鑒了一個(gè)Android的解決方案解決的 裕膀。需要了解Flutter和原生交互。
參考鏈接:https://blog.csdn.net/smaillift/article/details/105726889
大概意思就是勇哗,通過在Activity中獲取啟動(dòng)android視圖的參數(shù)昼扛,之前搞Android的同學(xué)應(yīng)該明白什么意思。
不明白的也沒關(guān)系欲诺,其實(shí)就相當(dāng)于抄谐,啟動(dòng)app的時(shí)候,有個(gè)默認(rèn)的主頁扰法,相當(dāng)于給這個(gè)主頁傳參數(shù)蛹含,然后有方法可以獲取到這些參數(shù)。
我采用的解決方式是塞颁,當(dāng)程序啟動(dòng)之后浦箱,在首頁初始化的時(shí)候吸耿,F(xiàn)lutter和Android原生進(jìn)行交互,取到這些參數(shù)酷窥,返回給Flutter咽安,進(jìn)行處理。
具體步驟如下
在創(chuàng)建推送的時(shí)候蓬推,添加自己需要附加的參數(shù)之后妆棒,在找到天蝎url_activity的地方,然后把flutter android項(xiàng)目的主activity填寫上沸伏,例如:com.test.pack.MainActivity
com.test.pack 是自己項(xiàng)目的包命糕珊,注意這里不要直接cv。
然后創(chuàng)建一個(gè)flutter和原生交互的方法
取到的參數(shù)是個(gè)String格式馋评,可以直接json.decode
然后就可以正常處理了放接。
還有就是需要注意調(diào)試推送的時(shí)候,選擇僅通過廠商通道進(jìn)行下發(fā)留特。