前言html
對於開發者來講,三方 SDK 這個詞已是一個不須要任何解釋的詞語了,然而我想面對琳琅滿目的 SDK 產品,你們都會糾結如何選擇。那麼選擇一個 SDK 須要注意哪些問題呢?前端
SDK 的 穩定易用ios
須要 持續更新功能git
BUG 修復 效率高github
開公司不像開玩笑(說倒閉就倒閉了)api
售後 Kill 問題的能力app
與自身需求的契合度等等...async
最後,還有一個選擇點讓人容易忽略ide
各個 SDK 的統一性模塊化
也就是在其功能相對 OK 的狀況下,儘可能使用同一廠商提供的 SDK 。
爲何這樣說?
我想每一個開發者都有到各大平臺去註冊開發者帳戶,而後申請應用這樣的繁瑣操做。
若是你有 5 個功能採用了 5 個公司 SDK ,我想,真的是一件讓人抓狂的事!
不只如此,對代碼的管理、項目維護都是一件至關麻煩的事。
綜上,咱們期待有一個可以解決多個功能的三方 SDK 。
在這種成套的 SDK 公司的選擇上,也讓我糾結好久,有些公司作的很單一;有些公司 SDK 不符合咱們對 SDK 處女座般要求。
後來在公司維護推送的時候,偶然發現極光對其餘服務(IM通信、短信下發、統計、分享)的支持,心中頓喜。仔細研究後,確實沒有讓人失望。
極光成套的 SDK
極光推送
既然是成套介紹,仍是先說極光推送吧。
想了半天都無從下口,由於實在太出名了。我是個 iOS 開發者,我我的在使用極光推送的時候,也寫了一篇總結性技術博客,如有興趣能夠查看。
首先看一張極光官網展現的圖片
都是 知名 App,也讓咱們對本身的選擇有了很多信心。
JPush 提供四種消息形式:通知、自定義消息、富媒體、本地通知
再來看一張 JPush 的運行流程圖
簡單來講,經過本身部署的服務端與極光雲端傳訊,極光經過兩個渠道與手機傳訊。
由於是說明文,我就不貼代碼了,具體實現和使用請看官方文檔。
目前我本身公司是正在使用極光推送,準時準確率是很是高的,也很容易管理消息。也是所以,讓我有興趣看向極光的其餘產品。
看到極光推出即時聊天,很讓人驚喜,但又以爲彷佛本應如此。由於極光推送這麼強大,那麼理應推出同類功能的即時聊天。
值得一提的是,極光全部的 SDK 都是模塊化的,即不一樣需求可分開實現。看下圖,你就明白,這樣的好處是,解決了 SDK 的臃腫也利於低耦合。
對於聊天,我想你們和我同樣關心一個問題,提供聊天 UI 工具嗎?
也不能說咱們開發者懶,畢竟這個東西本身寫實在是費事,對於如今部分公司的快速開發要求,明顯是吃力的。
好消息是,極光提供 UI 工具類,可是可能大部分人說了,在哪?我怎麼沒見到。其實這個工具被極光 開源在了他們的 GitHub。iOS 方面是使用 Swift 編寫,直接開源,終於又有看大神源碼的機會了。
另外,我在查看 JMessage 集成文檔的時候發現,他們的 iOS 代碼文檔是採用 Appledoc 編輯的,簡單來講就是蘋果風,咱們都知道蘋果在文檔方面的編寫是至關卓越的。
說到極光社交,你們可能會說,我使用了友盟社交,也很不錯。的確如此,不過這不符合咱們對 套裝的要求,既然極光提供社交分享,爲什麼不用呢?
分享實際上是一個不復雜的功能,可是集成卻挺麻煩,這裏不是說 SDK ,主要是個大平臺的註冊,真的多,我本身公司分享 5 個平臺,每一個平臺都要去拿 AppKey ,這樣是沒辦法的事。分享代碼示例:
JSHAREMessage *message = [JSHAREMessage message]; message.text = @"JShare SDK 支持主流社交平臺、幫助開發者輕鬆實現社會化功能!"; message.platform = JSHAREPlatformQQ; message.mediaType = JSHAREText; [JSHAREService share:message handler:^(JSHAREState state, NSError *error) { NSLog(@"分享回調"); } }];
在三方登陸方面,相同的,極光也提供了一個整體的回調函數,無論什麼平臺登陸都會回調這個函數,在裏面拿到平臺用戶的 名稱、頭像等信息。
[JSHAREService getSocialUserInfo:platfrom handler:^(JSHARESocialUserInfo *userInfo, NSError *error) { NSString *alertMessage; NSString *title; if (error) { title = @"失敗"; alertMessage = @"沒法獲取到用戶信息"; }else{ title = userInfo.name; alertMessage = [NSString stringWithFormat:@"暱稱: %@\n 頭像連接: %@\n 性別: %@\n",userInfo.name,userInfo.iconurl,userInfo.gender == 1? @"男" : @"女"]; } UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:title message:alertMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; dispatch_async(dispatch_get_main_queue(), ^{ [Alert show]; }); }];
極光統計提供了 頁面統計、地理位置統計、崩潰日誌統計、購買統計、登陸統計等等....前面列舉的都是咱們平時開發經常使用的。
對一個公司來講,想了解用戶對自身產品的迴應度,統計是必不可少的。我記得馬雲在一個節目裏面提及大數據的好處,他自問自答,大家知道哪一個省的女人胸平均最小嗎?浙江省。雖然是個活躍氣氛的玩笑話,倒是個真實的玩笑話,足以說明了數據的重要性。
極光統計可幫助開發者瞭解用戶的屬性和使用狀況,優化用戶體驗,爲企業決策提供有效的數據支撐。
簡單說下用法
頁面統計,在這兩地方調用方法就能記錄用戶進出頁面的路徑、時間了
- (void)viewDidAppear:(BOOL)animated { [JANALYTICSService startLogPageView:@"first_page_flow"]; } - (void)viewDidDisappear:(BOOL)animated { [JANALYTICSService stopLogPageView:@"first_page_flow"]; }
崩潰統計、就一行代碼
[JANALYTICSService crashLogON];
地理位置統計,更新位置後調用如下代碼
CLLocation * location = [[CLLocation alloc] initWithCoordinate:CLLocationCoordinate2DMake(116.46, 39.92) altitude:50 horizontalAccuracy:50 verticalAccuracy:50 timestamp:[NSDate date]]; [JANALYTICSService setLocation:location];
使用都至關的簡單。
短信通知,這使用率實在太多了,生活中各類短信驗證碼橫行無忌,已然成爲了各類產品會員註冊、商品推廣的重要渠道。
在個人公司,短信下發都是有後臺開發者統一管理的,前端人員調用接口便可。
極光短信提供 文本短信、語音短信、單條模板、羣發模板等發送場景
來看下極光短信提供給服務端調用短信的API
返回示例
//發送成功 {"msg_id": "288193860302"}` //發送失敗 { "error": { "code": *****, "message": "******" } }
具體開發文檔請點擊這裏查看
總結
以上介紹了極光平臺提供的 推送、聊天、社交、短信、統計功能,這些功能都是咱們 App 開發中最經常使用到的一部分功能。而極光在這些服務方面作的都是不錯的,固然,除卻 推送的高知名度外,其餘的服務彷佛不那麼被人所知。就像若是你不看這篇博客,可能你並不知道極光有本身的 GitHub 開源代碼。
在這個各類 SDK 層出不窮的互聯網中,各類競爭日趨激烈,但不論如何,咱們開發者所關注的永遠是優質的代碼與售後服務。
最後,期待極光的這個 套裝在穿在咱們 App 身上的時候,讓咱們以爲愈來愈舒服、愈來愈輕快。
轉自:極光社區 @Raindew