就在前不久,我的一個(gè)對(duì) jpush-api-csharp-client 的PR #28 被合并到項(xiàng)目中,其實(shí)這一次的修改只是在 readme.md 中添加了一個(gè)到我的項(xiàng)目的鏈接,僅此而已。
一切還是要從頭說(shuō)起。
當(dāng)時(shí)還沒(méi)有從上一家公司離職。后臺(tái)需要做一個(gè)向我們產(chǎn)品的Android & iOS端推送消息的功能,那個(gè)時(shí)候是我第一次聽說(shuō)極光推送,在此之前我認(rèn)為的消息推送是要在app內(nèi)自己編寫邏輯,而極光可以很方便的實(shí)現(xiàn)多端推送。
項(xiàng)目后臺(tái)是 .Net,看到這兒的同學(xué)可能會(huì)覺(jué)得奇怪,跟我此次PR中鏈接到的項(xiàng)目平臺(tái)并不一樣。當(dāng)時(shí)由于自己在學(xué)習(xí) .Net core,而在 .Net core 中默認(rèn)支持了DI,不需要再引用第三方服務(wù)來(lái)實(shí)現(xiàn)此功能,在默認(rèn)的Asp.Net Core模板代碼中也包含了像 services.AddMvc() 這樣的代碼,其內(nèi)部操作就算將一些需要的對(duì)象注入到了IoC容器中。背景介紹到此。
看到給出的推送示例代碼,每次使用都需要自己去 new 一下,或者是放到一個(gè)靜態(tài)類中,讓我感覺(jué)很難受。當(dāng)時(shí)就想:能不能在 .Net core 中使用一句簡(jiǎn)單的 services.AddJPush() 讓后邊的使用可以一勞永逸?很快,這個(gè)小功能就實(shí)現(xiàn)了,然后提了一個(gè)PR #24 。
在18年12月中的時(shí)候收到了回復(fù),并沒(méi)有采用我該次的提交。

確實(shí)是我自己的疏忽,極光推送的類庫(kù)是面向 .Net Standard 的,即同時(shí)需要支持 .Net core 和 .Net Framework,而我添加的這個(gè)功能在 .Net Framework 中并不能使用。
但是我并沒(méi)有放棄。
我重新寫了一個(gè)擴(kuò)展類庫(kù) jpush-api-csharp-client.Extensions,如果使用Asp.Net Core,可以引用改類庫(kù),使用前面所說(shuō)的簡(jiǎn)單操作。
當(dāng)然這次PR被merge進(jìn)了官方項(xiàng)目中,在此非常感謝 @helperhaps 。
關(guān)于改擴(kuò)展的具體使用方法可以查看 文檔 ,另外歡迎各種Star和Fork,以及PR。
最后,無(wú)論所有語(yǔ)言的發(fā)展離不開開源社區(qū)每一個(gè)人的努力。
「本文為極光征文參賽文章」