package Ġv ip . qs os . im . data _ jpa . server Ċ Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġv ip . qs os . im . config . IM Properties Ċ import Ġv ip . qs os . im . service . IM Message Push er Ċ import Ġv ip . qs os . im . lib . server . model . IM Exception Ċ import Ġv ip . qs os . im . lib . server . model . IM Message Ċ import Ġv ip . qs os . im . service . I MA p ns Service Ċ import Ġv ip . qs os . im . service . IM Session Service Ċ import Ġjavax . annotation . Resource Ċ Ċ /** æ¶Īæģ¯ åıĳéĢģ å®ŀçİ° ç±» Ċ Ġ* Ġ@ author Ġ: Ġ åįİ æ¸ħ æĿ ¾ Ċ Ġ*/ Ċ @ Component Ċ class ĠIM Message Push er Impl Ġ: ĠIM Message Push er Ġ{ ĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Properties : ĠIM Properties ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm IM Session Service : ĠI MS ession Service ĊĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm I MA p ns Service : ĠI MA p ns Service ĊĊĠĠĠ Ġoverride Ġfun Ġpush ( msg : ĠIM Message ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO Ġ è®¾è®¡ åıĳéĢģ å¤±è´¥ çļĦ å¤ĦçĲĨ æľºåĪ¶ ĊĠĠĠĠĠĠĠ Ġm IM Session Service . find ( msg . receiver )?. let Ġ{ Ġsession Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . is IOS Channel Ġ&& Ġsession . is Ap ns Open Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** IOS è®¾å¤ĩ ï¼Į å¦Ĥæŀľ å¼ĢåĲ¯ äºĨ ap ns ï¼Į åĪĻ ä½¿çĶ¨ ap ns æİ¨ éĢģ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . deviceId ?. let Ġ{ Ġtoken Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm I MA p ns Service . push ( msg , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIM Exception (" æ¶Īæģ¯ åıĳéĢģ å¤±è´¥ ï¼Į èĭ ¹ æŀľ DEVICE ĠTOKEN ä¸įåŃĺåľ¨ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . isConnected Ġ&& Ġm Properties . host Ip Ġ!= Ġsession . host Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** éĢļ éģĵ æŃ£å¸¸ ï¼Į ä½Ĩ è¿ŀæİ¥ çļĦæĺ¯ åħ¶å®ĥ æľįåĬ¡åĻ¨ ï¼Į è½¬ äº¤ åıĳéĢģ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** TODO Ġåľ¨ æŃ¤ è°ĥçĶ¨ çĽ®æłĩ æľįåĬ¡åĻ¨ æİ¥åı£ æĿ¥ åıĳéĢģ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . isConnected Ġ&& Ġm Properties . host Ip Ġ== Ġsession . host Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** éĢļ éģĵ æŃ£å¸¸ ï¼Į è¿ŀæİ¥ çļĦæĺ¯ å½ĵåīį æľįåĬ¡åĻ¨ ï¼Į çĽ´æİ¥ åıĳéĢģ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsg . format Ġ= ĠIM Message . Format . PROTOBUF . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . write ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIM Exception (" æ¶Īæģ¯ åıĳéĢģ å¤±è´¥ ï¼Į ç»Ī ç«¯ æľª ä¸Ĭ çº¿ æĪĸ æİ¨ éĢģ æľºåĪ¶ æľª è¯ĨåĪ« ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIM Exception (" æ¶Īæģ¯ åıĳéĢģ ç»ĵæĿŁ ï¼Į æİ¥æĶ¶ è´¦åı· æľª ä¸Ĭ çº¿ ") ĊĠĠĠ Ġ} Ċ }