新聞中心
大家學(xué)習(xí)ios有什么學(xué)習(xí)心得沒?
千鋒網(wǎng)上有很多的ios開發(fā)教程,也有很多的ios開發(fā)工作者發(fā)表的學(xué)習(xí)心得
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供瀾滄網(wǎng)站建設(shè)、瀾滄做網(wǎng)站、瀾滄網(wǎng)站設(shè)計(jì)、瀾滄網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、瀾滄企業(yè)網(wǎng)站模板建站服務(wù),十年瀾滄做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
對(duì)設(shè)計(jì)圖做標(biāo)注之iOS篇
08年的7月11號(hào),當(dāng)蘋果發(fā)布iPhone3G并推出AppStore和iOS開發(fā)SDK之后,iOS開發(fā)正式出現(xiàn)了。隨著iPhone的熱賣,App作為移動(dòng)互聯(lián)網(wǎng)的入口凸現(xiàn)了它的巨大價(jià)值,無(wú)數(shù)創(chuàng)業(yè)團(tuán)隊(duì)開始紛紛開發(fā)自己的App,iOS開發(fā)的身價(jià)也是水漲船高。由于蘋果提供了完善的開發(fā)工具和健全的App市場(chǎng),App的設(shè)計(jì)與開發(fā)只能按照蘋果的標(biāo)準(zhǔn)來(lái),所以 320X480 的尺寸成了設(shè)計(jì)師們?cè)O(shè)計(jì)App的標(biāo)準(zhǔn)尺寸。
這個(gè)標(biāo)準(zhǔn)到2012年發(fā)布iPhone5之前一直是金科玉律,設(shè)計(jì)師無(wú)須關(guān)心什么是px(pixel),什么是pt(point),原因是早期的iPhone中,像素和點(diǎn)是對(duì)等的;后來(lái)雖然有點(diǎn)小插曲出了retina屏幕,設(shè)計(jì)師設(shè)計(jì)時(shí)也只需要把原來(lái)的尺寸放大一倍即可,開發(fā)人員會(huì)默認(rèn)縮小一倍做開發(fā)。可以說(shuō)蘋果當(dāng)時(shí)是非常照顧開發(fā)和設(shè)計(jì)人員的,即使升級(jí)了retina屏幕,開發(fā)和設(shè)計(jì)之間的默契馬上會(huì)自動(dòng)達(dá)成。但這也給之后埋下了隱患。
iPhone4s是喬布斯的遺作,但它也可以看作是小團(tuán)隊(duì)開發(fā)iOS應(yīng)用浪潮中泡沫的分水嶺。
之后問題開始慢慢暴露了。首先是iPhone5變長(zhǎng)了,當(dāng)時(shí)我們都挺驚訝的,連忙去確認(rèn)了尺寸,發(fā)現(xiàn)屏幕從{320,480}變成了{(lán)320,568}。有經(jīng)驗(yàn)的iOS開發(fā)通過動(dòng)態(tài)計(jì)算屏幕高度馬上解決了這個(gè)問題。然后,開發(fā)同學(xué)和設(shè)計(jì)同學(xué)溝通好,把效果圖和標(biāo)注圖的尺寸改成了{(lán)640,1136}。這次蘋果的改動(dòng)其實(shí)并沒有影響原來(lái)開發(fā)的方式和設(shè)計(jì)的原則,所以可是說(shuō)是虛驚一場(chǎng)。
但是好景不長(zhǎng),iPhone6和iPhone6 Plus出現(xiàn)了,蘋果第一次在一場(chǎng)發(fā)布會(huì)上發(fā)布2款不同尺寸的手機(jī)。這時(shí)候,iOS攻城獅心中是一群草泥馬在萬(wàn)馬奔騰。從那時(shí)起,開發(fā)和設(shè)計(jì)之間的問題就徹底暴露了。
當(dāng)然,蘋果也給了一個(gè)萬(wàn)金油的方案,如果我們什么都不改,App會(huì)在iPhone6和iPhone6 Plus等大屏手機(jī)上自動(dòng)等比放大展示。作為企業(yè)級(jí)的App,怎么能容忍放大版的App在iPhone6 Plus上顯示呢(因?yàn)樗娴暮艽螅H缓螅覀兘o不同尺寸的機(jī)型補(bǔ)上了不一樣的啟動(dòng)圖(示意圖如下)。
驗(yàn)證完所有需要支持的iPhone機(jī)型,我們得到了4種不同的屏幕尺寸,分別是{320,480},{320,568},{375,667},{414,736}(示意圖如下)。
開發(fā)同學(xué)一看到需要給App開發(fā)4種尺寸時(shí),一開始的心態(tài)是悶逼的。設(shè)計(jì)人員也納悶到底拿哪個(gè)尺寸做效果圖呢。因?yàn)槎紱]有經(jīng)驗(yàn),一開始我們繼續(xù)讓設(shè)計(jì)師用{640,1136}做標(biāo)注圖,這樣我們結(jié)合屏幕的寬度和高度,可以很快的調(diào)整好不同尺寸下的布局。
隨著iPhone6和iPhone6 Plus的大量普及以及高端Android手機(jī)市場(chǎng)份額的提升,之前{640,1136}做的效果圖在真機(jī)上展示很不理想,于是設(shè)計(jì)師們把效果圖的設(shè)計(jì)尺寸改成了{(lán)750,1334},而且還考慮用{1080,1920}做效果圖。一般設(shè)計(jì)師們都是在效果圖上直接做標(biāo)注,由于效果圖尺寸變成了{(lán)750,1334},我們iOS開發(fā)拿到標(biāo)注圖的尺寸也變成了{(lán)750,1334}。然后,開發(fā)拿著px做各種換算,碰到了各種奇怪的問題,做出來(lái)的頁(yè)面和效果圖的差距總是很大。我列舉下幾個(gè)常見的問題:
其實(shí),當(dāng)設(shè)計(jì)師用小屏幕的規(guī)范去設(shè)計(jì)大屏幕時(shí),設(shè)計(jì)稿已經(jīng)出問題了。比如在小屏幕的時(shí)候,定義了最小字號(hào)為9號(hào),9號(hào)字在PS上{750,1334}的設(shè)計(jì)圖起來(lái)還可以,但在真機(jī)retina屏幕上看起來(lái)就很小,視覺落差特別大。設(shè)計(jì)師一看效果不對(duì),就讓開發(fā)加大字號(hào);字號(hào)變大后,小屏幕的字體就感覺特別大,然后讓開發(fā)分屏幕對(duì)待,小屏幕不變,大屏幕加大字號(hào);開發(fā)拿著{750,1334}尺寸的px標(biāo)注圖,總感覺之前除以2后的寬高在小屏幕上顯示不對(duì),于是又用(屏幕寬度/320)搞了個(gè)比例系數(shù),而且將錯(cuò)就錯(cuò)的在所有的寬高上乘以該系數(shù)。
然后在敏捷開發(fā)的團(tuán)隊(duì)里,設(shè)計(jì)師和工程師都開始懷疑人生了。設(shè)計(jì)師總感覺設(shè)計(jì)稿和真機(jī)效果差別很大,工程師總感覺實(shí)現(xiàn)的跟標(biāo)注圖不一致。最后只能通過海量的微調(diào)來(lái)達(dá)到看起來(lái)差不多的效果。
說(shuō)到現(xiàn)在,我們差不多明白問題出在哪里了。
首先是設(shè)計(jì)師的設(shè)計(jì)規(guī)范需要修訂了,之前用在小屏幕上的設(shè)計(jì)規(guī)范不能生搬硬套在大屏幕上,需要重新修訂設(shè)計(jì)規(guī)范,兼顧小屏和大屏。
然后是工程師需要更加深入的了解iPhone的渲染機(jī)制了,否則px和pt會(huì)搞得傻傻分不清。有朋友會(huì)說(shuō),px和pt怎么會(huì)搞不清楚呢,1pt在iPhone6(包括iPhone6s)之前都是2px,在iPhone6 Plus和iPhone6s Plus上是3px。但是當(dāng)你做出來(lái)的效果總是跟設(shè)計(jì)師的標(biāo)注圖不一樣時(shí),你是不是會(huì)懷疑自己實(shí)現(xiàn)錯(cuò)了。當(dāng)你覺得設(shè)計(jì)師標(biāo)注有問題時(shí),你又怎么說(shuō)明緣由然后告訴設(shè)計(jì)師一個(gè)誤差較少的方案呢?你要明白設(shè)計(jì)師現(xiàn)在以不再是單獨(dú)為iOS開發(fā)做設(shè)計(jì)了,還要兼顧Android和H5頁(yè)面。
所以,我們需要靜下來(lái)好好研究下iPhone現(xiàn)在是怎么渲染的,然后找到一個(gè)靠譜的方案讓設(shè)計(jì)師對(duì)標(biāo)注圖做調(diào)整。
在iOS開發(fā)中,point是抽象單位,它只在iOS系統(tǒng)給我們抽象出來(lái)的數(shù)字坐標(biāo)系中有意義,與pixel沒有直接的關(guān)系。之前我們常說(shuō)1pt等于2px,1pt等于3px,這些等式之所以成立是因?yàn)槲覀儫o(wú)意識(shí)中都給等式加了一個(gè)附加條件,那就是在某種機(jī)型下。所以之后的機(jī)型說(shuō)不定就有1pt等于4px,1pt等于5px的情況。
當(dāng)我們?cè)跀?shù)字坐標(biāo)系中繪制完界面后,iOS系統(tǒng)就開始在內(nèi)存中渲染適合當(dāng)前手機(jī)屏幕的頁(yè)面尺寸,這個(gè)時(shí)候,渲染的單位就是pixel了。用基于點(diǎn)的圖形使用像素進(jìn)行渲染,這個(gè)過程叫做光柵化。像素坐標(biāo)系是通過點(diǎn)坐標(biāo)系乘以一個(gè)比例因子來(lái)獲得的。比例因子越大,屏幕的像素密度越大,現(xiàn)實(shí)效果就越好。而我們常說(shuō)的1倍、2倍、3倍就是比例因子。
但是在iPhone6Plus中,屏幕的物理像素只有{1080,1920},而內(nèi)存渲染的像素卻是3倍的點(diǎn)坐標(biāo)系{1242,2208}。為了正常顯示,iPhone6Plus在顯示的時(shí)候做了一個(gè) 縮減像素采樣 (downsampling)的操作。現(xiàn)在我們明白iPhone6Plus的屏幕分辨率為什么不是3倍了。
為了證明iPhone各種機(jī)型上渲染的像素是不同的,我們來(lái)比較下1個(gè)點(diǎn)寬度的線是怎么渲染的。下面是示意圖:
這個(gè)縮放比率是 1920 / 2208 = 1080 / 1242 = 20 / 23。這意味著iPhone原始渲染的過程中,每23個(gè)渲染像素必須映射到20個(gè)物理像素上。換句話說(shuō),圖片被縮放到了大約只有原始大小的87%。
下面,我們從宏觀的角度來(lái)看看不同的iPhone機(jī)型是怎么適配的。請(qǐng)看下圖:
搞清楚iPhone的渲染機(jī)制后,我們也知道了如何讓設(shè)計(jì)師調(diào)整標(biāo)注圖了。之前,設(shè)計(jì)師為了兼顧Android和H5頁(yè)面的效果圖,把效果圖大小調(diào)整為{750, 1334};考慮到工作量,設(shè)計(jì)師會(huì)在效果圖上直接出標(biāo)注,按照之前的約定默認(rèn)的單位就px。對(duì)于開發(fā)人員,拿著{750, 1334}單位是px的標(biāo)注圖,他的第一反應(yīng)是這是iPhone6的標(biāo)注,iPhone6 plus和小屏的標(biāo)注只能自己算了。下面我們拿左邊距15px做例子:
這么算下來(lái),感覺pt總是算不對(duì)。問題出在 不同手機(jī)屏幕上相等的視覺長(zhǎng)度它們的像素是不同的 ,所以渲染15px的左邊距,不同手機(jī)上的視覺邊距都不一樣。如果想在不同手機(jī)屏幕上讓左邊距看起來(lái)都一樣,我們必須使用pt為單位,原因我們?cè)谏厦娼榻BiPhone渲染機(jī)制中已作了說(shuō)明,這里不再贅述。
其實(shí),設(shè)計(jì)師關(guān)注的點(diǎn)也就是標(biāo)注的內(nèi)容在不同手機(jī)屏幕上顯示的效果一樣,比如左邊距。對(duì)于特殊的適配情況,設(shè)計(jì)師自然會(huì)給不同分辨率下的標(biāo)注。而之前的原因出在我們開發(fā)人員沒有向設(shè)計(jì)師解釋清楚 不同屏幕上渲染相等的視覺長(zhǎng)度,像素是不一樣的,但渲染的point是一樣的 。后來(lái),我們換成了pt作單位,絕大多數(shù)實(shí)現(xiàn)不準(zhǔn)確的問題都被解決了,對(duì)于定高定寬的情況,標(biāo)注時(shí)也做了特殊說(shuō)明,而且也都換成了相對(duì)布局的方式進(jìn)行標(biāo)注;最后,拿一張我們最近的標(biāo)注圖做示例。
終于寫完了,感覺自己文筆有限,語(yǔ)句多不通順,但你要明白一點(diǎn), 不同手機(jī)屏幕上渲染相等的視覺長(zhǎng)度,pixel是不一樣的,但渲染的point是一樣的 。希望這篇iOS標(biāo)注解惑能讓你了解pixel和point本質(zhì)的區(qū)別。最后歡迎大家積極回復(fù)留言,交流心得。
app是如何制作的,APP如何開發(fā)?
手機(jī)APP制作流程:無(wú)需技術(shù),教你制作一個(gè)自己的手機(jī)APP
一款手機(jī)APP的制作,說(shuō)復(fù)雜非常復(fù)雜,涉及到多個(gè)領(lǐng)域的研發(fā),稍復(fù)雜一點(diǎn)的個(gè)人研發(fā)基本上搞不定,但是,也有非常簡(jiǎn)單的手機(jī)APP一站式制作運(yùn)營(yíng)方法。
隨著移動(dòng)互聯(lián)網(wǎng)基層開開發(fā)技術(shù)的發(fā)展,無(wú)需編程技術(shù),也可以在應(yīng)用公園制作手機(jī)。這里就以應(yīng)用公園為例,教您熟悉手機(jī)APP制作流程,手把手教你制作一款自己心儀的手機(jī)APP。
第一步:了解自己想要制作一款怎么的手機(jī)APP。是軟硬件結(jié)合? 游戲 類?商城類?新聞資訊類?互動(dòng)類?聊天類?還是團(tuán)購(gòu)類、同城服務(wù)類?送餐類?企業(yè)展示類?
每一個(gè)類別的APP開發(fā)差異非常大,主要就是不同類型所需要的功能支持。對(duì)自己想要做的APP有個(gè)大致的了解,但是這一步很多人都沒搞清楚,大部分人都存在一個(gè)大概模糊的創(chuàng)意、想法階段。
第二步:了解自己想要做的APP的基礎(chǔ)功能,劃分板塊。
對(duì)基礎(chǔ)功能的了解、板塊的分類,上手最快的方法就是:查看市場(chǎng)上類似的APP進(jìn)行借鑒。
第三步:界面及交互的設(shè)計(jì)
界面及交互的設(shè)計(jì),可以直接使用“墨刀”。可以先設(shè)計(jì)一個(gè)大概,后期不斷豐富。
第四步:APP功能的開發(fā)制作
APP功能的開發(fā)直接使用應(yīng)用公園就可以了。應(yīng)用公園把市場(chǎng)上常見的APP功能進(jìn)行拆分組合,你不需要懂任何編程技術(shù),只需喲安把需要的功能挑選出,組合搭配一個(gè),就能迅速組建出一個(gè)手機(jī)APP。
手機(jī)APP制作具體流程:
1、打開應(yīng)用公園的官網(wǎng),點(diǎn)擊“開始制作”,注冊(cè)登錄;
2、應(yīng)用公園為在線APP制作平臺(tái),所以不需要下載任何東西,直接進(jìn)入制作頁(yè)面就可以;
3、應(yīng)用公園目前有兩種模式:
(1)主題模式:應(yīng)用公園平臺(tái)上,已經(jīng)很多已經(jīng)制作完善的手機(jī)APP軟件,可以直接當(dāng)做模板使用,僅需要把里面的文字圖片進(jìn)行替換,就可以快速制作一款A(yù)PP。
(2)自由模式:就像拼圖一樣,把需要的功能自由組合搭配一下,就可以創(chuàng)造一款獨(dú)一無(wú)二的手機(jī)APP。
每一個(gè)功能控件的具體功能,都通過后臺(tái)自動(dòng)配置。
4、手機(jī)APP打包
制作完善后,在應(yīng)用公園平臺(tái)直接點(diǎn)擊制作完成,就會(huì)自動(dòng)打包成手機(jī)安裝程序。
5、應(yīng)用發(fā)布上架
在應(yīng)用公園平臺(tái)直接申請(qǐng)應(yīng)用發(fā)布,通過聯(lián)網(wǎng)后,就可以聯(lián)網(wǎng)使用了。
6、下載管理、運(yùn)營(yíng)
應(yīng)用公園提供運(yùn)營(yíng)管理后臺(tái)、下載站點(diǎn)、下載二維碼、手機(jī)管理助手等APP相關(guān)產(chǎn)品,一站式服務(wù),自動(dòng)配置,免去多次開發(fā)成本,而且后期的功能、內(nèi)容的更新迭代自己既可以搞定,也不需要具體的編程技術(shù)。
自己制作app需要 編程知識(shí) 。但依靠第三方工具,三分鐘就可以做成專屬自己的APP。下面以簡(jiǎn)易網(wǎng)為例演示:
簡(jiǎn)網(wǎng)APP工廠三大特點(diǎn)
1、最低的成本:節(jié)省所有開發(fā)成本,以及僅幾分鐘的時(shí)間成本。
2、實(shí)用的功能:貼近傳統(tǒng)網(wǎng)站的內(nèi)容編輯與發(fā)布方式。
3、靈活的運(yùn)營(yíng):生成APP后,一個(gè)人也可以完美運(yùn)營(yíng)。
先來(lái)了解一下APP工廠:三分鐘制作APP
使用簡(jiǎn)網(wǎng)APP工廠之前,我曾經(jīng)通過其他類似的APP公司制作過兩三個(gè)不同版本的免費(fèi)APP,簡(jiǎn)網(wǎng)的操作流程是制作門檻最低的一家。
不支持用戶名注冊(cè),需要使用微博賬號(hào)
新浪與騰訊微博用戶數(shù)幾乎覆蓋全網(wǎng)網(wǎng)民數(shù),我們默認(rèn)用戶已經(jīng)擁有微博賬號(hào),以便于進(jìn)行APP快速創(chuàng)建。
填寫APP信息:幾分鐘搞定
制作APP之前我們需要做一些準(zhǔn)備工作,比如我們要明確我們要做一個(gè)怎樣的APP,我們要為這個(gè)APP準(zhǔn)備一張1024x1024的ICON以及一張114x114的小圖標(biāo),另外還需要一張640x1136的開機(jī)圖。
從簡(jiǎn)網(wǎng)APP工廠的首頁(yè),經(jīng)過3次跳轉(zhuǎn),省略了網(wǎng)站注冊(cè)過程,通過模板挑選完成APP美工定案,所需的是APP的圖標(biāo)與應(yīng)用簡(jiǎn)介。全過程幾分鐘足矣。
快捷實(shí)用的后臺(tái)采編系統(tǒng)
我們制作了一個(gè)新聞資訊類的APP軟件,同時(shí)我們擁有了一個(gè)功能齊全的后臺(tái)更新系統(tǒng)。利用后臺(tái)可以完全解決APP內(nèi)容更新問題,可以快速進(jìn)行新聞發(fā)布,包括文字、圖片、視頻、微博等形式,并且引入了完善的評(píng)論系統(tǒng)與社區(qū)系統(tǒng)。
筆者至今使用過三家大型網(wǎng)站的后臺(tái)系統(tǒng),由于種種 歷史 原因,這些后臺(tái)系統(tǒng)都存在或多或少的不合理設(shè)計(jì),也許是因?yàn)槌休d的功能過多,數(shù)據(jù)架構(gòu)過于復(fù)雜,在新入職人員上手操作時(shí),需要經(jīng)過長(zhǎng)時(shí)間的熟悉過程。
簡(jiǎn)網(wǎng)為我們制作的APP提供了統(tǒng)一的后臺(tái)模板,這個(gè)后臺(tái)的功能亮點(diǎn)在于不僅提供原始錄入,還提供也許是目前設(shè)計(jì)最為合理的網(wǎng)絡(luò)來(lái)源抓取功能。包括網(wǎng)頁(yè)、微博在內(nèi)的網(wǎng)絡(luò)內(nèi)容,都可以在大約1分鐘時(shí)間內(nèi)導(dǎo)入后臺(tái)中,并且實(shí)時(shí)呈現(xiàn)在用戶手機(jī)上的APP客戶端。
APP的生成時(shí)間約為三分鐘,APP容量只有3M,一般的寬帶都可以在1分鐘之內(nèi)下載好裝進(jìn)手機(jī)
我們得到了一個(gè)可安裝的APP軟件
同時(shí)獲得了一個(gè)功能完善的編輯后臺(tái)
快速的內(nèi)容抓取,讓后臺(tái)采編人員的數(shù)量可以降到最低,維持一個(gè)日更新量在100篇文章左右的APP客戶端,一個(gè)工作人員足矣。
內(nèi)容采編神器:發(fā)布到應(yīng)用
“發(fā)布到應(yīng)用”這個(gè)功能可以說(shuō)是管理后臺(tái)提供的最強(qiáng)大的一個(gè)功能,經(jīng)過簡(jiǎn)單的設(shè)置后,我們可以在幾秒鐘之內(nèi)把網(wǎng)絡(luò)內(nèi)容發(fā)布到我們的APP客戶端。
這樣一個(gè)媒體類APP就做好了。
很高興回答這個(gè)問題。
我是從事安卓App開發(fā)的,開發(fā)過很多App,那么App是如何制作的。
頁(yè)面設(shè)計(jì)
我們看到的app都一個(gè)個(gè)頁(yè)面,每個(gè)頁(yè)面功能不同。首先是產(chǎn)品經(jīng)理通過調(diào)研整理需求,然后將需求整理成頁(yè)面(可以使用墨刀等網(wǎng)頁(yè)制作),然后在交給UI人員進(jìn)行專業(yè)設(shè)計(jì)和美化,最后將設(shè)計(jì)圖打包給開發(fā)人員。
開發(fā)設(shè)計(jì)
拿安卓舉例,開發(fā)使用語(yǔ)言也分幾種,具體得根據(jù)實(shí)際情況來(lái)選擇。
1.原生開發(fā)
安卓一般使用java語(yǔ)言開發(fā),當(dāng)然現(xiàn)在也有kotlin語(yǔ)言進(jìn)行開發(fā)。如何開發(fā)就涉及到具體編程了,這里就不詳說(shuō)了。簡(jiǎn)單描述就是使用安卓提供的一系列控件來(lái)實(shí)現(xiàn)頁(yè)面,復(fù)雜點(diǎn)的頁(yè)面可以通過自定義控件來(lái)實(shí)現(xiàn)。
2.使用H5語(yǔ)言開發(fā)
使用H5開發(fā)的好處有很多,可以多端復(fù)用,比如瀏覽器端,ios端,當(dāng)然H5開發(fā)的體驗(yàn)是沒有原生好的。結(jié)合我做過的項(xiàng)目來(lái)說(shuō),一般是這個(gè)頁(yè)面需要分享出去的話,就用H5開發(fā)。
3.使用flutter開發(fā)
flutter是近年來(lái)谷歌推出的一款UI框架,
使用dart語(yǔ)言進(jìn)行開發(fā),支持跨平臺(tái),weight渲染直接操作硬件層,體驗(yàn)可媲美原生。但是flutter技術(shù)比較新,生態(tài)還不完善,開發(fā)起來(lái)效率相對(duì)偏低
頁(yè)面數(shù)據(jù)填充
頁(yè)面開發(fā)出來(lái)只是空殼子,沒有數(shù)據(jù)填充,這時(shí)候就需要通過接口獲取數(shù)據(jù),然后解析數(shù)據(jù),顯示在頁(yè)面上。
到此,一個(gè)大概的App制作流程就結(jié)束了。
首先你要清楚自己想要什么樣的APP,是做哪一方便的?簡(jiǎn)單的?還是復(fù)雜的
一下我就分為兩類進(jìn)行回答
一,簡(jiǎn)單APP
必要崗位
ui設(shè)計(jì)師(至少一個(gè))
主要負(fù)責(zé)APP頁(yè)面的搭建和交互的梳理
客戶端開發(fā)人員(至少一個(gè))
目前市面上的APP開發(fā)方式多為混合開發(fā),如果做一個(gè)簡(jiǎn)單的APP可以選擇webapp,這樣不但可以減少開發(fā)周期還可以控制開發(fā)成本
服務(wù)端開發(fā)(至少一個(gè))
目前服務(wù)器語(yǔ)言很多php,java,
node.js
非必要崗位
首先 ,我說(shuō)的非必要崗位不是說(shuō)這些崗位不重要,而是說(shuō)在為了減少成本的情況下,這樣崗位可以被別的崗位所替代
產(chǎn)品經(jīng)理
如果開發(fā)的App功能簡(jiǎn)單,UI設(shè)計(jì)師就可以擔(dān)任這樣職責(zé)
測(cè)試工程師
當(dāng)然,在時(shí)間允許的情況下,開發(fā)人員也可以是測(cè)試人員
二,復(fù)雜APP
復(fù)雜app可以考慮純?cè)_發(fā),那么客戶端至少兩個(gè)人進(jìn)行開發(fā)(安卓,IOS),或者考慮混合開發(fā),及web前端+原生開發(fā)人員
必要崗位
ui設(shè)計(jì)師,安卓開發(fā)工程師,ios開發(fā)工程師,后端開發(fā)工程師,產(chǎn)品經(jīng)理,測(cè)試工程師,人員的多少可以根據(jù)項(xiàng)目的大小來(lái)定
三,必要成本
服務(wù)器 :這是開發(fā)app必須要的,也就是我們放代碼的地方
上架審核所需費(fèi)用 :比如IOS上架審核的花好幾百,安卓要申請(qǐng)軟著等
今年六月的時(shí)候,萌生了開發(fā)一個(gè)記賬 App 的想法,想去用自己的 App 記賬,管理收支。那時(shí)正好在英國(guó)是考試周,放假后,我回到了國(guó)內(nèi),準(zhǔn)備去實(shí)現(xiàn)我的計(jì)劃。沒想到這暑假很快就結(jié)束了,在這個(gè)暑假中經(jīng)歷的太多的事,準(zhǔn)備了要去美國(guó)讀研的考試,遇到了生命中的另一半,同時(shí),也將 Costuary for iPhone 帶到了這個(gè)世界。
Logo
說(shuō)道為什么要開發(fā)這樣一個(gè) App ,因?yàn)楣P者在 UK 讀書,市面上很少有記賬 App 能夠?qū)崿F(xiàn)實(shí)時(shí)匯率的換算,帶有這個(gè)功能的 App 也是操作繁雜。所以要自己開發(fā)一個(gè),功能并沒有那么復(fù)雜的,并且能夠滿足自己在國(guó)外和國(guó)內(nèi)生活需求的 App,所以自己編寫了 iPhone 的客戶端,為了獲取匯率和 Excel 導(dǎo)出,又用 Java 設(shè)計(jì)和編寫了 Costuary 的后端服務(wù)器。
比起今年年初開發(fā)的 Flat Weather,這個(gè)項(xiàng)目的代碼量大約是他的十倍,需要實(shí)現(xiàn)眾多的功能和模塊。
這篇文章將會(huì)介紹一下 Costuary 的功能與我開發(fā)過程中的一些心得。
效果圖設(shè)計(jì)
說(shuō)到設(shè)計(jì),兩年前,我還是一個(gè) Android 開發(fā)者,Google 的 Material Design 是我的最愛,所以,Costuary 采用了 Android 5.0 之后采用的 Material Design 設(shè)計(jì)。其中摻雜了一些我自己的設(shè)計(jì),因?yàn)?Material Design 的控件有時(shí)候操作繁瑣。
早在 5 月份的時(shí)候已經(jīng)零零總總的用 Sketch 畫出了這個(gè)產(chǎn)品的 UI 和圖標(biāo),之后開始了漫長(zhǎng)開發(fā)的過程。
Sketch交互
與去年開發(fā)的 Android 版不同,iPhone 版的 Costuary 采用了底部導(dǎo)航欄的設(shè)計(jì),相比于 Android 通常使用的 Navigation Drawer 的抽屜布局,底部導(dǎo)航欄的設(shè)計(jì)即使在右手操作 iPhone 的時(shí)候都不會(huì)太費(fèi)力。
UX功能 Features
Costuary 支持世界上主要貨幣的實(shí)時(shí)匯率轉(zhuǎn)換,所有外匯在統(tǒng)計(jì)時(shí)會(huì)轉(zhuǎn)換成主貨幣的數(shù)目,方便查看花銷。
日歷視圖能夠很直觀的反映出哪一天有消費(fèi)和收入。
說(shuō)到記賬軟件,量化消費(fèi)的圖表無(wú)疑是重要的一環(huán),Costuary 提供了餅狀圖來(lái)視覺化一段時(shí)間的花銷。
可以建立多個(gè)賬戶來(lái)表示自己的銀行卡,支付寶,現(xiàn)金等等。
可以看出本月的預(yù)算還有多少。
如果想要進(jìn)行更加詳細(xì)的分析,可以使用導(dǎo)出功能將賬本導(dǎo)出到 Excel。
允許備份賬本內(nèi)容到 iCloud。
開發(fā)
去把一紙?jiān)O(shè)計(jì)變成真正的產(chǎn)品,這是一個(gè)獨(dú)立開發(fā)者應(yīng)該具有的能力。只會(huì)寫代碼不只是我唯一掌握的,能夠去設(shè)計(jì)出來(lái)自己想要的應(yīng)用并且將他實(shí)現(xiàn)才是我在做的事情。
這款應(yīng)用的開發(fā)并沒有想象中的簡(jiǎn)單,需要自己去實(shí)現(xiàn)大量 Android UI 控件,很多圓角,陰影,字體,要慢慢的去調(diào)整,讓控件適合 iPhone 的屏幕。整個(gè)應(yīng)用的背后有 3 個(gè)關(guān)系型數(shù)據(jù)庫(kù)來(lái)儲(chǔ)存賬戶,賬本與各種匯率。與以前開發(fā)的 Flat Weather 不同,Costuary 會(huì)產(chǎn)生大量的用戶數(shù)據(jù),所以整個(gè)軟件架構(gòu)的穩(wěn)定性變得異常重要,需要設(shè)計(jì)一些機(jī)制來(lái)防止數(shù)據(jù)丟失與損壞。
Development
為了實(shí)現(xiàn) App 獲取每日的匯率,并且在 iPhone 上能夠?qū)崿F(xiàn)賬本導(dǎo)出到 Excel ,我設(shè)計(jì)了一個(gè)服務(wù)器后端來(lái)處理這些繁雜的實(shí)物。每次 App 啟動(dòng)后會(huì)與我的服務(wù)器來(lái)更新最新的匯率。當(dāng)用戶選擇導(dǎo)出時(shí),賬本會(huì)被發(fā)送到服務(wù)器上并處理為 Excel 發(fā)送到用戶的郵箱里。
說(shuō)到服務(wù)器,就不得不提到用戶隱私了,因?yàn)閷?dǎo)出到 Excel 功能需要將賬本傳到我的服務(wù)器上做進(jìn)一步處理,很多人會(huì)覺得我侵犯了他的個(gè)人隱私。對(duì)此,為了保護(hù)我的權(quán)益與用戶的權(quán)益,我撰寫了 Costuary 軟件許可及服務(wù)協(xié)議與 Costuary 隱私政策,這是我作為獨(dú)立開發(fā)者這么多年后第一次去寫許可協(xié)議。
Agreement資費(fèi)
與我的其他產(chǎn)品一樣,這款 App 依舊是免費(fèi)供大家使用的,作為獨(dú)立開發(fā)者,我們都知道,絕大多數(shù)用戶不會(huì)去珍惜一個(gè)免費(fèi)的產(chǎn)品。就像 Flat Weather 一樣,雖然獲得了很多人的支持,但是也收到了很多人的吐槽。在 Costuary 中依然設(shè)計(jì)了一個(gè)的捐助按鈕,如果大家使用之后喜歡這個(gè)應(yīng)用,請(qǐng)支持我將他維護(hù)下去。
Please donate me尾巴
Costuary for iPhone 是我開發(fā)出來(lái)過最大的軟件體系。我相信,能夠獨(dú)立開發(fā)出來(lái)產(chǎn)品的人懂得不只是編程。一個(gè)人要去經(jīng)歷項(xiàng)目的全部生命周期:規(guī)劃,設(shè)計(jì),開發(fā),運(yùn)營(yíng),維護(hù),營(yíng)銷,這些是我開發(fā)這么多產(chǎn)品所學(xué)會(huì)的。
現(xiàn)在的 Costuary 只是第一個(gè)版本,還有很多 iPhone 的特性沒有來(lái)得及開發(fā),以后會(huì)跟上的,比如 iPhone X 的適配,3D Touch、Today Widget、Touch ID 等等。
以前在少數(shù)派撰稿的時(shí)候,很多讀者會(huì)來(lái)問我如何學(xué)習(xí)開發(fā),我也特地去寫過如何去學(xué)習(xí)編程,但我相信,真正想去學(xué)習(xí)的,想去為這個(gè)生態(tài)貢獻(xiàn)出自己的一份力的人,自己都會(huì)找到學(xué)習(xí)的方法。我的專業(yè)是電子電器而不是軟件工程,但是我不后悔當(dāng)年去學(xué)習(xí)編程。
最后,還是感謝在背后默默支持我的人,我會(huì)不斷地改進(jìn)與提升,如果 Costuary 真的在記賬方面給予了你便利,這是我莫大的榮幸。
如果想要了解我的更多作品可以訪問我的個(gè)人博客 MikeTech,或者在少數(shù)派中閱讀我以前寫過的文章。今年年初也在 iPhone 上寫過一個(gè)天氣 App,天氣應(yīng)用 Flat Weather 的設(shè)計(jì)歷程
對(duì)了,關(guān)于記賬有什么用,如何記賬,如何養(yǎng)成記賬的習(xí)慣。為什么每個(gè)月末都捉襟見肘,除了沒錢,很可能是對(duì)財(cái)務(wù)管理的能力不強(qiáng)。想了解這一方面的知識(shí),不妨看一看我派的付費(fèi)閱讀欄目:從零開始做好個(gè)人記賬
你好,非常感謝你的邀請(qǐng)。
開發(fā)一個(gè)app的話首先
第一步、需要調(diào)研,分析開發(fā)需求。
第二步、根據(jù)你的開發(fā)需求整理一個(gè)開發(fā)方案,選擇合理的架構(gòu)。
第三步、開始研發(fā)。
第四步、測(cè)試。
第五步、上線試運(yùn)行。
第六步、查缺補(bǔ)漏后投入使用。
開發(fā)一個(gè)app的話。有多種選擇。可以找一個(gè)第三方公司來(lái)進(jìn)行開發(fā)。也可以自己招聘開發(fā)團(tuán)隊(duì)。也可以交給比較信任的程序員朋友來(lái)進(jìn)行開發(fā)。第三種方式的話,屬于接私活兒,成本較低。 當(dāng)然前提你得有認(rèn)識(shí)的人。
我也是程序員出身。參與過web網(wǎng)站開發(fā)。傳統(tǒng)辦公開發(fā)。H5開發(fā)。微信小程序開發(fā)。以及安卓開發(fā)。有著較豐富的開發(fā)經(jīng)驗(yàn)。自己完全可以勝任一個(gè)App,如果你有這方面的事需求的話,也可以私信我。我是山東的。如果方便的話也可以面談。
App軟件開發(fā),從之前的溝通需求、規(guī)劃設(shè)計(jì)、程序開發(fā)、測(cè)試修改、它的發(fā)布等。這是一個(gè)非常復(fù)雜和漫長(zhǎng)的過程,一旦進(jìn)入通信,就需要定期維護(hù)和功能變更。它需要大量的專業(yè)人員參與,成本自然很高。 所以,隨著更新市場(chǎng)的發(fā)展和人們福利的提高,現(xiàn)在已經(jīng)不像傳統(tǒng)開發(fā)那么困難了。只需要?jiǎng)觿?dòng)鼠標(biāo),不需要觸碰代碼就可以完成制作app部分。
App開發(fā)已成為企業(yè)發(fā)展的重要推動(dòng)力量
十年巨變!移動(dòng)互聯(lián)網(wǎng)已顛覆我們的時(shí)代,商業(yè)、社交、視頻、新聞、工具等領(lǐng)域,移動(dòng)應(yīng)用的滲透率已高達(dá)95%,在團(tuán)購(gòu) 旅游 和零售行業(yè),移動(dòng)端收入規(guī)模已超過PC端,手機(jī)APP已成為企業(yè)不可或缺的線上陣地。
不用編程就能制作app的在線平臺(tái),擺脫了很多復(fù)雜的流程,還能減少用戶的麻煩,不會(huì)制作,而且可以在平臺(tái)上查看詳細(xì)的課程,非常貼心的設(shè)置!在這里,我想說(shuō)的是,如果你想制作app的話,可以在平臺(tái)上查看詳細(xì)的課程。總的來(lái)說(shuō),這種方法會(huì)大大降低軟件開發(fā)app的成本,節(jié)省時(shí)間,讓很多人解決了資金短缺和想快速制作app的問題。
app是如何制作的,APP如何開發(fā)?
隨著智能手機(jī)APP軟件的吸引力越來(lái)越大,越來(lái)越多的企業(yè)開始開發(fā)自己的APP應(yīng)用。企業(yè)要想開發(fā)屬于自己企業(yè)的APP應(yīng)用,首先要分析自身的情況和市場(chǎng)對(duì)產(chǎn)品的需求。
在APP,開發(fā)這件事上,企業(yè)一定要注意以下幾點(diǎn)。
1. 開發(fā)APP應(yīng)用一定要明確以自己為中心,開發(fā)APP是否能帶來(lái)巨大的利潤(rùn)。
2. 要了解目標(biāo)用戶的需求,配置APP吸引用戶,提高用戶購(gòu)買應(yīng)用的意愿。
3. 通過合作再次尋找潛在客戶,我相信開發(fā)APP的收益遠(yuǎn)遠(yuǎn)大于成本。
開發(fā)APP蘋果系統(tǒng),必須使用Xcode蘋果開發(fā)工具,一般采用Objective-C或Swift語(yǔ)言。Objective-C是繼承了C語(yǔ)言的C字,可以直接用Objective-C語(yǔ)言進(jìn)行編程。如果你不懂?dāng)?shù)據(jù),差別很小。還有一些新的蘋果后綴語(yǔ)言,非常有用。
Andro系統(tǒng)的app都是用Java語(yǔ)言開發(fā)的,Java語(yǔ)言已經(jīng)流行了20多年,這個(gè)趨勢(shì)還在持續(xù)和延續(xù)。如果想要安卓系統(tǒng)的app首先要掌握J(rèn)ava語(yǔ)言,對(duì)于說(shuō)C語(yǔ)言的人來(lái)說(shuō),學(xué)習(xí)Java還是很容易的。如果你對(duì)自學(xué)感興趣,Java網(wǎng)站上有很多培訓(xùn)課程,還有很多免費(fèi)培訓(xùn)。視頻,不想付費(fèi)。如果這個(gè)絕對(duì)是零基礎(chǔ)(沒學(xué)過其他編程語(yǔ)言,比如c語(yǔ)言),如果真的很感興趣,可以自學(xué),但是速度比較慢。
總結(jié):app開發(fā)擁有多種方法,選擇最適合自己的方式方法很重要
答案寫到這里,我想您應(yīng)該知道了app的開發(fā)途徑或者方法是什么。如果您是小企業(yè)或者是個(gè)體工商戶,您可以找人幫忙開發(fā)小程序或者自己在一些網(wǎng)站上進(jìn)行傻瓜式軟件開發(fā)。正如上文所說(shuō),現(xiàn)在有很多的網(wǎng)站支持在線生成APP,常用的功能和接口都已經(jīng)設(shè)置好了,操作起來(lái)不是很難。如果您是大企業(yè),業(yè)務(wù)多訪問量比較大,我的建議是您應(yīng)該聘請(qǐng)專業(yè)的軟件工程師開發(fā)專門的app,避免后期出現(xiàn)的問題沒辦法及時(shí)解決給您的企業(yè)帶來(lái)?yè)p失。
不懂的話,找專業(yè)的人幫忙,我就是專業(yè)的
app即application program。應(yīng)用程序。目前手機(jī)平臺(tái)是ios和安卓?jī)纱笃脚_(tái)的天下。本人不才從事安卓開發(fā)。簡(jiǎn)單介紹一下吧你問的這個(gè)問題范圍太廣。ios和安卓開發(fā)語(yǔ)言不同。ios使用的是object_c和swift。安卓是基于java。二者都屬于面向?qū)ο蟮恼Z(yǔ)言。開發(fā)平臺(tái)安卓基于android studio早期使用的是eclipse+adt。不過已經(jīng)被淘汰了。那么怎樣開發(fā)app?首先你需要一個(gè)后臺(tái)程序員寫服務(wù)器以及搭建數(shù)據(jù)庫(kù)。其次你的會(huì)ios或是android其中之一那么這就是最簡(jiǎn)單的配置.現(xiàn)在流行混合開發(fā)如果你再會(huì)點(diǎn)前端的h5和js就更好了。一般一個(gè)軟件公司的基本配置是一個(gè)前端一個(gè)ios一個(gè)安卓一個(gè)后臺(tái)。基本就滿足你搭建網(wǎng)站和手機(jī)應(yīng)用的需求了。不過你作為老板養(yǎng)這樣一個(gè)團(tuán)隊(duì)很費(fèi)錢。還不如找外包
軟件的生成需要經(jīng)歷以下幾個(gè)階段:
1、滿足用戶需求——建立軟件目標(biāo),設(shè)想產(chǎn)品功能,進(jìn)行場(chǎng)景化細(xì)分說(shuō)明;進(jìn)行可行性分析,用戶需求收集,用戶需求場(chǎng)景描述;場(chǎng)景問題梳理;獲取用戶行為、想法;場(chǎng)景應(yīng)用痛點(diǎn),機(jī)會(huì)點(diǎn)
2、需求開發(fā)與管理——建立用戶畫像,從軟件目標(biāo)出發(fā),進(jìn)行問題梳理,場(chǎng)景行為分析,愿景分析,建立體驗(yàn)地圖
3、利用Axure繪制軟件原型,在用戶場(chǎng)景中切入,并組織軟件原型實(shí)施,在實(shí)施過程中進(jìn)行問卷調(diào)查,收集問題,記錄用戶行為,不斷改善軟件需求,進(jìn)行需求評(píng)審,進(jìn)入評(píng)審優(yōu)化
4、技術(shù)可行性分析——技術(shù)分析,場(chǎng)景分析,功能實(shí)現(xiàn)驗(yàn)證,
5、開發(fā)計(jì)劃制定,實(shí)施,測(cè)試,驗(yàn)證,發(fā)布
iOS開發(fā)心得(RTL阿拉伯適配)
在這里要注意left和right。如果你是用的Auto的話你就不能用left、right了你需要改成leading 、trailing這樣的話系統(tǒng)就會(huì)自動(dòng)適應(yīng)(我項(xiàng)目中用的不是Auto,所以我沒有嘗試)我項(xiàng)目中用的是frame的寫法,系統(tǒng)就非常不友好了。需要自己處理。
這個(gè)方法返回的UIImage
在這里系統(tǒng)有幾個(gè)屬性需要處理:
1.RTL模式下
2.正常模式下
iOS BLE 開發(fā)小記[1] - CoreBluetooth 是什么
現(xiàn)在我們都知道,很多智能硬件設(shè)備都已經(jīng)集成了低功耗藍(lán)牙模塊,這樣我們就可以開發(fā)一個(gè) iOS 或者 Mac APP 與它們進(jìn)行交互。從 macOS 10.9 和 iOS 6 以后,Mac 和 iOS 設(shè)備就支持 低功耗藍(lán)牙技術(shù)了,我們可以通過 CoreBluetooth 這個(gè)框架與底層的各種藍(lán)牙協(xié)議棧進(jìn)行交互,比如 GATT、ATT 和 L2CAP 等。
與底層交互的過程如下圖所示:
開始下文之前,我們需要了解幾個(gè)概念。對(duì)藍(lán)牙不夠了解的可以看一下維基百科關(guān)于 藍(lán)牙 的簡(jiǎn)介。
Bluetooth 4.0 : 藍(lán)牙 4.0 是 Bluetooth SIG 于2010年7月7日推出的新的規(guī)范,其最重要的特性是功耗低,省電!
BLE : Bluetooth low energy wireless technology,也就是低功耗無(wú)線藍(lán)牙技術(shù)。
BLE 是關(guān)于藍(lán)牙4.0 的詳細(xì)說(shuō)明,它定義了一套用于低功耗設(shè)備之間通信的協(xié)議。而CoreBluetooth 則是對(duì) BLE 協(xié)議棧的抽象。也就是說(shuō),它隱藏了許多底層的詳細(xì)實(shí)現(xiàn)細(xì)節(jié),這樣對(duì)我們開發(fā)者來(lái)說(shuō),開發(fā)一個(gè) APP 與 BLE 設(shè)備進(jìn)行交互將會(huì)很便捷。
CoreBluetooth 中最關(guān)鍵的兩個(gè)角色就是 Central(中心) 和 Peripheral(周邊), Peripheral 一般是提供數(shù)據(jù)的一方,而 Central 一般獲取 Peripheral 提供的數(shù)據(jù)然后來(lái)完成特定的任務(wù)。舉個(gè)例子,一個(gè)集成 BLE 的數(shù)字室溫計(jì)可能提供房間中的實(shí)時(shí)溫度,我們通過 APP 就可以讀取、分析和顯示房間中的溫度。
Peripheral 通過向空中廣播數(shù)據(jù)的方式來(lái)使我們能感知到它的存在。Central 通過掃描搜索來(lái)發(fā)現(xiàn)周圍正在廣播數(shù)據(jù)的 Peripheral, 找到指定的 Peripheral 后,發(fā)送連接請(qǐng)求進(jìn)行連接,連接成功后則與 Peripheral 進(jìn)行一些數(shù)據(jù)交互, Peripheral 則會(huì)通過合適的方式對(duì) Central 進(jìn)行響應(yīng)。
CoreBluetooth 對(duì)通用的藍(lán)牙任務(wù)進(jìn)行了簡(jiǎn)化處理,你在 App 中通過 CoreBluetooth 來(lái)集成 BLE 功能將會(huì)變得簡(jiǎn)單,如果你開發(fā)的 APP 遵循了 Centrals 的開發(fā)規(guī)范,CoreBluetooth 將會(huì)幫你處理與 Peripheral 的掃描、連接以及數(shù)據(jù)交互的過程,除此之外,通過 CoreBluetooth 將你的設(shè)備設(shè)置為 本地 Peripheral 也會(huì)很便捷。
iOS APP 的狀態(tài)也會(huì)影響藍(lán)牙的行為,當(dāng)你的 APP 在后臺(tái)運(yùn)行或者處于暫停狀態(tài)中,藍(lán)牙的行為將會(huì)受到影響。默認(rèn)情況下,當(dāng)你的 APP 在后臺(tái)運(yùn)行時(shí)或者處于暫停狀態(tài)中,你的 APP 是不能與 BLE 進(jìn)行數(shù)據(jù)通信的,也就是說(shuō),當(dāng) APP 后臺(tái)運(yùn)行時(shí),你需要與 BLE 進(jìn)行數(shù)據(jù)通信,你需要聲明你的 APP 支持藍(lán)牙后臺(tái)運(yùn)行模式,即使你聲明了支持后臺(tái)運(yùn)行模式,藍(lán)牙在后臺(tái)運(yùn)行模式下的數(shù)據(jù)處理方式也會(huì)變得不同,當(dāng)開發(fā)你的 BLE APP 時(shí),你需要注意這些不同點(diǎn)。
即使 APP 在后臺(tái)運(yùn)行時(shí),當(dāng)系統(tǒng)內(nèi)存過低時(shí)也會(huì)殺掉 APP 的后臺(tái)進(jìn)程,對(duì)于 iOS 7,CoreBluetooth 支持 Central 和 Peripheral 的狀態(tài)信息的保存和恢復(fù)。可以通過這個(gè)功能來(lái)實(shí)現(xiàn)與 BLE 設(shè)備的長(zhǎng)期交互。
CoreBluetooth 框架為你的 APP 與許多常見的 BLE 設(shè)備進(jìn)行交互提供了交互接口,通過合理的利用和實(shí)踐將會(huì)提高用戶的體驗(yàn)。
舉個(gè)例子,當(dāng)你實(shí)現(xiàn) Central 或 Peripheral 的功能時(shí),會(huì)利用設(shè)備攜帶的無(wú)線電廣播設(shè)備(Radio)向空中廣播信號(hào),這樣就會(huì)影響到電池的續(xù)航時(shí)間,因此當(dāng)你設(shè)計(jì) APP 時(shí),需要盡可能的減少 Radio 的使用頻率。
重要提醒: 在 iOS 10以后,通過 CoreBluetooth 與 BLE 設(shè)備進(jìn)行數(shù)據(jù)通信時(shí),必須在項(xiàng)目的 Info.plist 文件中包含關(guān)于 NSBluetoothPerpheralUsageDescription 的描述,否則會(huì)導(dǎo)致 APP 閃退,詳情見 NSBluetoothPerpheralUsageDescription 。
在 BLE 通信中主要包含兩種角色:Central(中心)和 Peripheral(周邊),基于傳統(tǒng)的客戶-服務(wù)器架構(gòu),Peripheral 通常會(huì)提供其他設(shè)備需要的數(shù)據(jù),Central 通常利用通過 Peripheral 獲取的信息來(lái)完成特定的任務(wù),如圖所示,心率監(jiān)視器 提供數(shù)據(jù)給 Mac 或 iOS APP,然后來(lái)顯示用戶的心率數(shù)據(jù)。
Peripheral 以廣播數(shù)據(jù)包的形式廣播服務(wù)中的數(shù)據(jù),廣播數(shù)據(jù)包指的是包含 Peripheral 有用信息的一個(gè)較小數(shù)據(jù)包,比如 Peripheral 的名字和主要功能數(shù)據(jù)。比如,一個(gè)數(shù)字室溫計(jì)廣播的數(shù)據(jù)中可能包括當(dāng)前室溫,對(duì)于 BLE,廣播是顯示它們存在的主要方式。
如圖,對(duì)于一個(gè) Central 來(lái)說(shuō),它能夠搜索和獲取到它想要的 Peripheral 的廣播信息。
連接 Peripheral 的目的就是和 Peripheral 提供的數(shù)據(jù)進(jìn)行交互,在你理解這一點(diǎn)后,可以更好的明白 Peripheral 的數(shù)據(jù)組成結(jié)構(gòu)。
Peripheral 包含一個(gè)或多個(gè) Service(服務(wù))和連接信號(hào)強(qiáng)度的有用信息。Service 可以理解成是一個(gè)完成指定功能的數(shù)據(jù)集合。舉個(gè)例子,一個(gè)心率監(jiān)測(cè)服務(wù)的功能就是可能就是從心率傳感器中讀取心率數(shù)據(jù)。
Service 是由 Characteristic(特征) 組成的,Characteristic 為 Peripheral 的 Service 提供更詳細(xì)的信息,舉個(gè)例子,心率服務(wù)可能包含一個(gè)測(cè)量不同體位的心率數(shù)據(jù)的 Characteristic 和一個(gè)傳輸心率數(shù)據(jù)的 Characteristic,下圖所示的是一個(gè)心率監(jiān)測(cè)設(shè)備的數(shù)據(jù)組成結(jié)構(gòu)。
當(dāng) Central 與 Peripheral 建立成功的連接后,Central 可以發(fā)現(xiàn) Peripheral 提供的全系列的 Service 和 Characteristic,廣播數(shù)據(jù)包中的數(shù)據(jù)僅僅是可用服務(wù)的一小部分而已。
Central 可以通過讀取或?qū)懭?Service Characteristic 值的方式與 Service 進(jìn)行交互。你的 APP 也許需要從數(shù)字室溫計(jì)中獲取當(dāng)前室內(nèi)的溫度或者設(shè)置一個(gè)溫度值到數(shù)字室溫計(jì)中。
BLE 通信過程中涉及到的主要角色和數(shù)據(jù)處理已經(jīng)簡(jiǎn)單的集成到 CoreBluetooth 框架中了。
當(dāng)你通過本地 Central 與周邊 Peripheral 進(jìn)行交互時(shí),你只需要調(diào)用 Central 方面的方法就可以了,除非你設(shè)置一個(gè)本地 Peripheral,并用它來(lái)響應(yīng)其他的 Central 的交互請(qǐng)求,實(shí)際運(yùn)用中,你的藍(lán)牙處理大部分會(huì)在 Central 方面。
在 Central 方面,用 CBCentralManager 對(duì)象來(lái)表示一個(gè)Local Central 設(shè)備,這個(gè)對(duì)象被用來(lái)管理 Remote Peripheral 設(shè)備(用 CBPeripheral 對(duì)象來(lái)表示),包括搜索和連接正在廣播數(shù)據(jù)的 Peripheral。如圖所示的是 CoreBluetooth 框架中如何表示 Local Central 和 Remote Peripheral。
當(dāng)你與 Remote Peripheral 進(jìn)行數(shù)據(jù)交互時(shí),你將處理它的 Service 和 Characteristic,在 CoreBluetooth 框架中,用 CBService 對(duì)象來(lái)表示 Peripheral 中的服務(wù),同樣地,用 CBCharacteristic 對(duì)象來(lái)表示 Service 中的特征。下圖所示的是 Remote Peripheral 的服務(wù)特征結(jié)構(gòu)樹。
對(duì)于 macOS 10.9 和 iOS 6, Mac 和 iOS 設(shè)備可以實(shí)現(xiàn) BLE Peripheral 的功能,如為其他設(shè)備(包括 Mac,iPhone,和 iPad)提供數(shù)據(jù)。當(dāng)你遵循 Peripheral 的開發(fā)規(guī)范時(shí),就可以調(diào)用 BLE 通信的 Peripheral 方面的方法。
在 Peripheral 方面,一個(gè) Local Peripheral 可以用 CBPeripheralManager 對(duì)象來(lái)表示,這個(gè)對(duì)象被用來(lái)管理發(fā)布包含的服務(wù),包括組織構(gòu)建 Peripheral 的數(shù)據(jù)結(jié)構(gòu)以及向中心設(shè)備廣播數(shù)據(jù),Peripheral Manager 也對(duì) Remote Central的讀寫交互請(qǐng)求做出響應(yīng)。如圖所示的是一個(gè) Local Peripheral 和 Remote Central。
當(dāng)你設(shè)置并與 Local Peripheral 進(jìn)行數(shù)據(jù)交互時(shí),你處理的是它的可變的 Service 和 Characteristic,在 CoreBluetooth 框架中,用 CBMutableService 對(duì)象來(lái)表示 Local Peripheral 中的服務(wù),同樣地,用 CBMutableCharacteristic 對(duì)象來(lái)表示Local Peripheral 服務(wù)中的特征。下圖表示的是一個(gè) Local Peripheral 中的服務(wù)特征結(jié)構(gòu)樹。
后續(xù)章節(jié)會(huì)進(jìn)一步補(bǔ)充關(guān)于 BLE 開發(fā)的知識(shí)。
1、 TP40013257-CH1-SW1
2、 CoreBluetoothOverview
歡迎在本文下面留言一起交流心得...
IOS藍(lán)牙開發(fā)心得
這幾年一直在做IOS端的智能穿戴的APP,使用藍(lán)牙開發(fā)的頻率也比較高,所以對(duì)藍(lán)牙開發(fā)還是有一定的了解,寫篇文章記錄總結(jié)。
理論知識(shí),我就不詳細(xì)說(shuō)了。簡(jiǎn)單理解:我們手機(jī)是CBCentralManager,就是中心。我們的手環(huán)等是CBPeripheral,就是外設(shè)。
手機(jī)APP連接外設(shè)需要的步驟:搜索外設(shè)—連接外設(shè)—-查找外設(shè)的服務(wù)—-查找外設(shè)的服務(wù)對(duì)應(yīng)特征。以上都是成功,不包括錯(cuò)誤失敗。
手機(jī)APP收發(fā)指令,都是通過 服務(wù)+特征 來(lái)進(jìn)行處理。
具體的做法,我們可以看我封裝的一個(gè)類,拖到項(xiàng)目中就可以用。
封裝的類名為:BleOperatorManager
_bleOpt = [BleOperatorManager sharedInstance];
_bleOpt.delegate = self;
_bleOpt.realTimeUpdateDeviceListBlock = ^(NSArray *listArray, NSDictionary *rssiDic, NSDictionary *macDic) {
//實(shí)時(shí)返回搜索到的外設(shè),listArray存了所有的外設(shè)結(jié)構(gòu)(CBPeripheral *),macDic保存了外設(shè)的mac地址
};
_bleOpt.gainMacAddress = ^NSString *(NSDictionary *advertisementData) {
//解析mac地址,并返回給原類
? ? ? ? NSData *data = advertisementData[@"kCBAdvDataManufacturerData"];
? ? ? ? return @"FF:FF:FF:FF";
};
搜索:startScanDevice:(NSArray *)adverUUIDArray
停止搜索:stopScanDevice
連接外設(shè):connectSelectPeripheral:(CBPeripheral *)peripheral
斷連:disconnectCurrentPeripheral:(BOOL)hasRecord
前面說(shuō)過,發(fā)送是需要 服務(wù)+特征 的,服務(wù)和特征,在連接藍(lán)牙的時(shí)候,可以得到,當(dāng)然也可以lightBlue查看。
然后發(fā)送就是:sendDataToBand:(NSData *)data WithServiceUUID:(NSString *)serviceUUID WithCharacteristicUUID:(NSString *)characteristicUUID withWriteType:(CBCharacteristicWriteType)writeType
如果發(fā)送是CBCharacteristicWriteWithResponse類型,那么發(fā)送完成后,就會(huì)調(diào)用
peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
//發(fā)送后的代理
}
接收數(shù)據(jù):外設(shè)主動(dòng)操作,我們只是對(duì)應(yīng)代理回調(diào):
peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
//收到的數(shù)據(jù)為:characteristic.value
}
還得有下面的配置:
項(xiàng)目加入CoreBluetooth庫(kù)
plist文件加入:
Required background modes:App communicates using CoreBluetooth
藍(lán)牙類: GitHub - wulang150/BleManager: 藍(lán)牙模塊
當(dāng)前題目:ios開發(fā)心得,ios心得總結(jié)
URL網(wǎng)址:http://ef60e0e.cn/article/hoipsh.html