日韩精品成人无码专区免费-国产99久久久久久免费看-国产精品丝袜久久久久久不卡-国产精品无码一区二区三区

Java轉iOS-第一個項目總結(1)

發布時間:2023-11-14 點擊:170
0.前言
本人14年12月份,從網站開發組轉到了移動開發組,自己的java兩年半工作經驗變成了objective-c零經驗。2015年1月份新啟動了一個移動項目,年后因為人事變動,自己從輔助開發變成了"核心"開發,目前項目基本接近尾聲,下面進行總結,希望對一些人能有幫助, 另外也希望ios大牛進行指導
1.項目介紹
項目屬于一款社區類軟件,包含小組/帖子,視頻,文章,評論,推薦搜索,即時通訊,好友,第三方登錄/分享,推送等,涵蓋常用app的基本功能
2.項目使用的第三方開源庫
http://github.ibireme.com/github/list/ios/整理了比較常用的ios第三方組件,以及github上的統計
項目使用了cocoapods(類似java中的maven)管理常用的第三方庫,一些特殊的單獨引用,下面介紹下比較好用的幾個
1.afnetworking
目前比較推薦的ios網絡請求組件,默認網絡請求是異步,通過block回調的方式對返回數據進行處理。
需要注意的是afnetworking對服務器返回的contenttype要求比較嚴格,默認只支持application/json的返回。所以可能需要添加對text/html返回的支持,否則可能無法獲得返回數據。
另外就是文件上傳,這里推薦使用第二種
[formdataappendpartwithformdata:name:]; [formdataappendpartwithfiledata:name:filename:mimetype:];
第一種只需要傳入表單名和文件流,源碼也是根據文件流獲得對應的文件名和文件類型,然后調用第二種方法。但是樓主遇到了使用第一種方法,提交后后臺判斷為非文件上傳,無法獲得文件流。還有如果后臺是根據文件后綴文件類型,那么第一種也無法使用。
afnetworking是異步的,也可以使用同步的網絡請求方法.
2.fmdb
對sqlite數據庫操作進行了封裝,demo也比較簡單
3.mbprogresshud
也是ios項目常用的一個組件,用于顯示過渡效果的,比如網絡請求之前顯示loading,網絡結束隱藏loading。建議封裝在baseviewcontroller中,所有viewcontroller繼承就能使用
4.mjrefresh
這個是傳智播客李明杰老師的作品,自己的oc基礎就是看他的視頻半個周末就基本拿下了。mjrefresh主要用于刷新操作,提供了常用的刷新操作,還有刷新動畫,用著很好用。建議把方法封裝在baseviewcontroller中,這樣修改刷新操作時,就只需要改動一份。(之前用的舊版mjrefresh,只支持普通的刷新,不支持動畫,后來更新后版本變化比較大,舊的方法已經不推薦使用了,所以還是封裝基類中使用比較好,方便以后修改)
5.sdwebimage
也是ios最常用的一個組件,用戶加載網絡圖片,可以緩存到本地。大概原理時,第一次加載后,會根據url加密作為文件名緩存在本地,如果再次加載圖片時,就直接從本地加載。用著也比較簡單。這里也分享遇到的一個問題,先從網絡加載一張小圖,然后小圖作為占位圖,再從網絡加載一張大圖
[imageviewsd_setimagewithurl:[nsurlurlwithstring:imageurlstring]placeholderimage:defaultpostpic]; [imageviewsd_setimagewithurl:[nsurlurlwithstring:_bigimageurlstringarray[i]]placeholderimage:imageview.imageoptions:sdwebimagedelayplaceholdercompleted:^(uiimage*image,nserror*error,sdimagecachetypecachetype,nsurl*imageurl){ }];
6.rdvtabbarcontroller
一個tabbar組件,可以方便設置底部菜單的文字圖片,點擊效果,小紅點提示等
7.toast
類似android的toast提示效果,封裝在baseviewcontroller中,需要的地方進行提示
8.xmppframework
ios唯一的xmpp類庫,作者在去年8月份添加了xep-0198協議支持(流管理,用于xmpp斷線重連),但是通過pod進行更新時,無法下載到最新版本,可能0198還沒有完善好,無法作為正式版。
9.tpkeyboardavoiding
用戶鍵盤彈出自動計算高度,進行屏幕滾動操作
10.amr
做即時通訊的音頻處理,目前我們的即時通訊使用的錄音文件是m4a,便于web端的音頻播放
11.tqrichtextview
用于做富文本視圖控件顯示,用于即時通訊的表情顯示,以及資源評論的富文本顯示
12.csgrowingtextview
用作即時通訊文本框和評論文本框使用,可以顯示多行輸入
13.mjextension
也是李明杰老師的作品,用于json轉model進行使用,有點類似于java中谷歌的gson。轉換效率據說也很高,使用也比較簡單,只要前后臺約定好,json直接就轉成了model。一個工作多年的ios朋友說,一個項目主要的是對model層的管理,他推薦的是mantle。不過mj這個更輕量級點,用著也更加簡單。
3.工具和插件介紹
xcode
ios開發的官方工具,也沒別的選擇。有些功能做的確實挺帥的,比如stroyboard的拖拽事件綁定。不爽的地方就是沒有代碼格式化,另外點擊方法,可能跑到另外一個類中了!!另外左邊的目錄也不會自動發生變化,定位到對應文件,需要command shift j
simpholders2
可以快速找到模擬器對應的沙盒目錄,啟動后右側頂部工具欄有個類似關閉按鍵的按鈕,顯示最近的幾個應用,點擊就進入到了對應的沙盒目錄
vvdocumenter-xcode
xcode工具,///生成注解模板,xcode這功能都不給集成,唉
其他的基本就不用介紹了,有的也不怎么好用。svn可以使用cornerstone,git可以使用sourcetree,sqlite可以使用sqlite professional(不過是收費的,免費的只能查看),還可以用火狐瀏覽器的sqlite插件。
4.集成友盟
友盟,提供了app和運用的一站式解決方案。公司上個移動項目用到了友盟的推送服務,這個項目中, 還使用了分享,第三方登錄的功能,自己也親自參與到了相關集成。友盟的開發者文檔還算是比較全的,遇到問題可以聯系客服或者到友盟的論壇找解決方案。
1.關于推送
ios推送分為本地推送和遠程推送,本地推送是指本地自己彈出信息,另外一個就是遠程推送,當應用未啟動時,也能收到相關推送信息。我們項目沒有使用本地推送,使用的都是友盟的遠程推送。包括消息(聊天)和通知(用戶信息通知)中。用戶在聊天過程中,手機除了發送即時通訊以外,也調用后臺接口,發送友盟推送。另外用戶的帖子,評論,關注,點贊等都會由后臺調用友盟的推送。
友盟推送(另外一個域名)包括單播,列播,和廣播,其中廣播限定次數每天3次,可以和友盟申請提高次數,其他不限定次數,目前來看單播速度還是挺快的。使用友盟推送,需要在蘋果開發者賬號中,新建兩個推送證書,提交給友盟(友盟有詳細的文檔,可以參考)。可以在友盟后臺,把測試設備的devicetoken加到友盟推送的后臺,從友盟后臺發起推送。(需要64位token,需要通過方法進行計算,直接在xcode或者ituns中拿到token不行)
推送的大概流程就是,手機在第一次啟動app的時候開啟推送服務,手機在啟動app的時候,注冊友盟服務,同時把devicetoken提交到自己的后臺,后臺可以在需要的時候拿著devicetoken調用友盟的推送接口,友盟再去發起蘋果的推送服務,使對應的設備收到遠程推送信息。
2.關于第三方登錄和分享
這塊兒都在友盟的社會化分享中,里面提供了比較全面的文檔。建議第三方分享模塊不用自己特殊設計,可以使用友盟的默認分享模塊(我們項目的分享模塊自己進行了設計,包括了收藏,所以整塊都需要自定義寫ui和寫分享代碼)。關于友盟的第三方登錄和分享需要注意的時,qq和微信登錄分享,都需要手機上安裝應用,appstore審核會卡這點,所以需要判斷手機是否安裝應用,隱藏沒有安裝應用的圖標,這塊兒友盟的sdk已經有相關的判斷方法(應該是友盟集成了qq和微信sdk,qq和微信sdk提供了判斷方法)。
第三方登錄分享需要到相關的平臺注冊開發者賬號。微信開發者賬號(注意不是訂閱號)第三方登錄需要交錢才能開通,可以支持微信和朋友圈分享。qq開發者賬號可以支持qq和qq空間分享(qq微博好像需要微博開發者賬號)。新浪微博需要微博開發者賬號。qq分享開發階段需要把測試賬號加成開發者賬號的好友才能測試,微博也類似。
第三方登錄自己遇到了qq提示不是最新版的文本,在友盟論壇中找到了解決方案。
第三方登錄,我們項目集成了qq,微信,新浪微博登錄。三個平臺都能獲得用戶的scr

云服務器哪里便宜今日價格
開啟了百度云加速網站就打不開麻煩幫忙看下原因
怎么進行域名解析 域名解析之后網站才能用嗎
阿里云學生服務器怎么優惠購買
阿里云服務器的價格表
我想買個便宜云服務器
云虛擬主機怎么管理
看得見才有用!聊聊移動APP導航設計的改版實戰