1.在項(xiàng)目目錄執(zhí)行 flutter create -t module XXX(flutter模塊名) ;

10多年的雨湖網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整雨湖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“雨湖網(wǎng)站設(shè)計(jì)”,“雨湖網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
2.修改Podfile,設(shè)置path,關(guān)聯(lián)podhelper.rb,注意采用 load File.join() ,不采用之前的eval語句,在target do下install;
3.執(zhí)行pod install;
4.修改AppDelegate為FlutterAppDelegate;
5.初始化并注冊(cè)FlutterEngine;
6.vscode里flutter attach實(shí)時(shí)調(diào)試;
做完這些正常開發(fā)是可以了,至于打包需要更改什么再續(xù)。
如果我們目前的項(xiàng)目是Android的,但是接下來我們希望部分頁面可以使用Flutter進(jìn)行開發(fā),甚至我們希望在Native頁面中嵌入FlutterUI組件,那么我們?cè)撊绾螌?shí)現(xiàn)呢?
假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的
這時(shí)候如果你想創(chuàng)建一個(gè)Flutter模塊,使得Android模塊和Flutter模塊之間可以進(jìn)行交互,我們可以通過Android Studio新建一個(gè)Flutter Module,具體過程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為
也就是說,最終你的項(xiàng)目結(jié)構(gòu)會(huì)是這樣的
接下來在Android Module的 build.gradle 文件中添加flutter依賴
先創(chuàng)建一個(gè)Flutter頁面
這里比較重要的是 window.defaultRouteName 這個(gè)字段,這個(gè)字段可以接收從Native傳遞過來的參數(shù) (下文我們會(huì)介紹原生傳遞參數(shù)的方法),也就是說通過這個(gè)字段我們就可以進(jìn)行Flutter頁面的路由的分發(fā)
我們可以直接在Android的 MainActivity 中啟動(dòng)一個(gè) FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對(duì)應(yīng)Flutter層的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注冊(cè) FlutterActivity
自己創(chuàng)建一個(gè) FlutterAppActivity 繼承自 FlutterActivity
在 MainActivity 中啟動(dòng) FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊(cè) FlutterAppActivity )
兩種啟動(dòng)方式的區(qū)別
如果單純只是想打開一個(gè)Flutter頁面,兩種方式實(shí)際上基本沒有太大區(qū)別,第一種方式也許還會(huì)更簡(jiǎn)單一點(diǎn)。但是,在Flutter開發(fā)中,我們往往還需要開發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫 FlutterActivity 的方式更有利于我們?cè)?FlutterActivity 中注冊(cè)我們的Native插件,所以實(shí)際開發(fā)中一般推薦使用第二種方式
擴(kuò)展思考
initialRoute 從名稱上看起來是Flutter提供給我們進(jìn)行Native與Flutter交互的路由跳轉(zhuǎn)的,但是實(shí)際上他就是一個(gè)字符串,我們不僅僅可以傳遞一個(gè)路由名稱,有時(shí)候我們也可以通過這個(gè)參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進(jìn)行解析,這樣我們就可以通過這個(gè)參數(shù)做更多的事情
activity_main.xml
FrameLayout 用于承載Flutter組件
MainActivity.java
使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中
運(yùn)行結(jié)果
上半部分是原生的TextView,下半部分是Flutter的Text組件
本節(jié)主要介紹了Native和Flutter之間的頁面跳轉(zhuǎn),以及同一個(gè)頁面中Native與Flutter組件的組合。接下來會(huì)介紹如何編寫Android插件與Flutter進(jìn)行數(shù)據(jù)交互
手機(jī)APP制作流程:無需技術(shù),教你制作一個(gè)自己的手機(jī)APP
一款手機(jī)APP的制作,說復(fù)雜非常復(fù)雜,涉及到多個(gè)領(lǐng)域的研發(fā),稍復(fù)雜一點(diǎn)的個(gè)人研發(fā)基本上搞不定,但是,也有非常簡(jiǎn)單的手機(jī)APP一站式制作運(yùn)營方法。
隨著移動(dòng)互聯(lián)網(wǎng)基層開開發(fā)技術(shù)的發(fā)展,無需編程技術(shù),也可以在應(yīng)用公園制作手機(jī)。這里就以應(yīng)用公園為例,教您熟悉手機(jī)APP制作流程,手把手教你制作一款自己心儀的手機(jī)APP。
第一步:了解自己想要制作一款怎么的手機(jī)APP。是軟硬件結(jié)合? 游戲 類?商城類?新聞資訊類?互動(dòng)類?聊天類?還是團(tuán)購類、同城服務(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)入制作頁面就可以;
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ú)一無二的手機(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ùn)營管理后臺(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)營:生成APP后,一個(gè)人也可以完美運(yùn)營。
先來了解一下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工廠的首頁,經(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)過長時(shí)間的熟悉過程。
簡(jiǎn)網(wǎng)為我們制作的APP提供了統(tǒng)一的后臺(tái)模板,這個(gè)后臺(tái)的功能亮點(diǎn)在于不僅提供原始錄入,還提供也許是目前設(shè)計(jì)最為合理的網(wǎng)絡(luò)來源抓取功能。包括網(wǎng)頁、微博在內(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è)功能可以說是管理后臺(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是如何制作的。
頁面設(shè)計(jì)
我們看到的app都一個(gè)個(gè)頁面,每個(gè)頁面功能不同。首先是產(chǎn)品經(jīng)理通過調(diào)研整理需求,然后將需求整理成頁面(可以使用墨刀等網(wǎng)頁制作),然后在交給UI人員進(jìn)行專業(yè)設(shè)計(jì)和美化,最后將設(shè)計(jì)圖打包給開發(fā)人員。
開發(fā)設(shè)計(jì)
拿安卓舉例,開發(fā)使用語言也分幾種,具體得根據(jù)實(shí)際情況來選擇。
1.原生開發(fā)
安卓一般使用java語言開發(fā),當(dāng)然現(xiàn)在也有kotlin語言進(jìn)行開發(fā)。如何開發(fā)就涉及到具體編程了,這里就不詳說了。簡(jiǎn)單描述就是使用安卓提供的一系列控件來實(shí)現(xiàn)頁面,復(fù)雜點(diǎn)的頁面可以通過自定義控件來實(shí)現(xiàn)。
2.使用H5語言開發(fā)
使用H5開發(fā)的好處有很多,可以多端復(fù)用,比如瀏覽器端,ios端,當(dāng)然H5開發(fā)的體驗(yàn)是沒有原生好的。結(jié)合我做過的項(xiàng)目來說,一般是這個(gè)頁面需要分享出去的話,就用H5開發(fā)。
3.使用flutter開發(fā)
flutter是近年來谷歌推出的一款UI框架,
使用dart語言進(jìn)行開發(fā),支持跨平臺(tái),weight渲染直接操作硬件層,體驗(yàn)可媲美原生。但是flutter技術(shù)比較新,生態(tài)還不完善,開發(fā)起來效率相對(duì)偏低
頁面數(shù)據(jù)填充
頁面開發(fā)出來只是空殼子,沒有數(shù)據(jù)填充,這時(shí)候就需要通過接口獲取數(shù)據(jù),然后解析數(shù)據(jù),顯示在頁面上。
到此,一個(gè)大概的App制作流程就結(jié)束了。
首先你要清楚自己想要什么樣的APP,是做哪一方便的?簡(jiǎn)單的?還是復(fù)雜的
一下我就分為兩類進(jìn)行回答
一,簡(jiǎn)單APP
必要崗位
ui設(shè)計(jì)師(至少一個(gè))
主要負(fù)責(zé)APP頁面的搭建和交互的梳理
客戶端開發(fā)人員(至少一個(gè))
目前市面上的APP開發(fā)方式多為混合開發(fā),如果做一個(gè)簡(jiǎn)單的APP可以選擇webapp,這樣不但可以減少開發(fā)周期還可以控制開發(fā)成本
服務(wù)端開發(fā)(至少一個(gè))
目前服務(wù)器語言很多php,java,
node.js
非必要崗位
首先 ,我說的非必要崗位不是說這些崗位不重要,而是說在為了減少成本的情況下,這樣崗位可以被別的崗位所替代
產(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)目的大小來定
三,必要成本
服務(wù)器 :這是開發(fā)app必須要的,也就是我們放代碼的地方
上架審核所需費(fèi)用 :比如IOS上架審核的花好幾百,安卓要申請(qǐng)軟著等
今年六月的時(shí)候,萌生了開發(fā)一個(gè)記賬 App 的想法,想去用自己的 App 記賬,管理收支。那時(shí)正好在英國是考試周,放假后,我回到了國內(nèi),準(zhǔn)備去實(shí)現(xiàn)我的計(jì)劃。沒想到這暑假很快就結(jié)束了,在這個(gè)暑假中經(jīng)歷的太多的事,準(zhǔn)備了要去美國讀研的考試,遇到了生命中的另一半,同時(shí),也將 Costuary for iPhone 帶到了這個(gè)世界。
Logo
說道為什么要開發(fā)這樣一個(gè) App ,因?yàn)楣P者在 UK 讀書,市面上很少有記賬 App 能夠?qū)崿F(xiàn)實(shí)時(shí)匯率的換算,帶有這個(gè)功能的 App 也是操作繁雜。所以要自己開發(fā)一個(gè),功能并沒有那么復(fù)雜的,并且能夠滿足自己在國外和國內(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ì)
說到設(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),之后開始了漫長開發(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)和收入。
說到記賬軟件,量化消費(fèi)的圖表無疑是重要的一環(huán),Costuary 提供了餅狀圖來視覺化一段時(shí)間的花銷。
可以建立多個(gè)賬戶來表示自己的銀行卡,支付寶,現(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ì)出來自己想要的應(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ù)庫來儲(chǔ)存賬戶,賬本與各種匯率。與以前開發(fā)的 Flat Weather 不同,Costuary 會(huì)產(chǎn)生大量的用戶數(shù)據(jù),所以整個(gè)軟件架構(gòu)的穩(wěn)定性變得異常重要,需要設(shè)計(jì)一些機(jī)制來防止數(shù)據(jù)丟失與損壞。
Development
為了實(shí)現(xiàn) App 獲取每日的匯率,并且在 iPhone 上能夠?qū)崿F(xiàn)賬本導(dǎo)出到 Excel ,我設(shè)計(jì)了一個(gè)服務(wù)器后端來處理這些繁雜的實(shí)物。每次 App 啟動(dòng)后會(huì)與我的服務(wù)器來更新最新的匯率。當(dāng)用戶選擇導(dǎo)出時(shí),賬本會(huì)被發(fā)送到服務(wù)器上并處理為 Excel 發(fā)送到用戶的郵箱里。
說到服務(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ā)出來過最大的軟件體系。我相信,能夠獨(dú)立開發(fā)出來產(chǎn)品的人懂得不只是編程。一個(gè)人要去經(jīng)歷項(xiàng)目的全部生命周期:規(guī)劃,設(shè)計(jì),開發(fā),運(yùn)營,維護(hù),營銷,這些是我開發(fā)這么多產(chǎn)品所學(xué)會(huì)的。
現(xiàn)在的 Costuary 只是第一個(gè)版本,還有很多 iPhone 的特性沒有來得及開發(fā),以后會(huì)跟上的,比如 iPhone X 的適配,3D Touch、Today Widget、Touch ID 等等。
以前在少數(shù)派撰稿的時(shí)候,很多讀者會(huì)來問我如何學(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è)第三方公司來進(jìn)行開發(fā)。也可以自己招聘開發(fā)團(tuán)隊(duì)。也可以交給比較信任的程序員朋友來進(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ù)雜和漫長的過程,一旦進(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)購 旅游 和零售行業(yè),移動(dòng)端收入規(guī)模已超過PC端,手機(jī)APP已成為企業(yè)不可或缺的線上陣地。
不用編程就能制作app的在線平臺(tái),擺脫了很多復(fù)雜的流程,還能減少用戶的麻煩,不會(huì)制作,而且可以在平臺(tái)上查看詳細(xì)的課程,非常貼心的設(shè)置!在這里,我想說的是,如果你想制作app的話,可以在平臺(tái)上查看詳細(xì)的課程。總的來說,這種方法會(huì)大大降低軟件開發(fā)app的成本,節(jié)省時(shí)間,讓很多人解決了資金短缺和想快速制作app的問題。
app是如何制作的,APP如何開發(fā)?
隨著智能手機(jī)APP軟件的吸引力越來越大,越來越多的企業(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是否能帶來巨大的利潤。
2. 要了解目標(biāo)用戶的需求,配置APP吸引用戶,提高用戶購買應(yīng)用的意愿。
3. 通過合作再次尋找潛在客戶,我相信開發(fā)APP的收益遠(yuǎn)遠(yuǎn)大于成本。
開發(fā)APP蘋果系統(tǒng),必須使用Xcode蘋果開發(fā)工具,一般采用Objective-C或Swift語言。Objective-C是繼承了C語言的C字,可以直接用Objective-C語言進(jìn)行編程。如果你不懂?dāng)?shù)據(jù),差別很小。還有一些新的蘋果后綴語言,非常有用。
Andro系統(tǒng)的app都是用Java語言開發(fā)的,Java語言已經(jīng)流行了20多年,這個(gè)趨勢(shì)還在持續(xù)和延續(xù)。如果想要安卓系統(tǒng)的app首先要掌握J(rèn)ava語言,對(duì)于說C語言的人來說,學(xué)習(xí)Java還是很容易的。如果你對(duì)自學(xué)感興趣,Java網(wǎng)站上有很多培訓(xùn)課程,還有很多免費(fèi)培訓(xùn)。視頻,不想付費(fèi)。如果這個(gè)絕對(duì)是零基礎(chǔ)(沒學(xué)過其他編程語言,比如c語言),如果真的很感興趣,可以自學(xué),但是速度比較慢。
總結(jié):app開發(fā)擁有多種方法,選擇最適合自己的方式方法很重要
答案寫到這里,我想您應(yīng)該知道了app的開發(fā)途徑或者方法是什么。如果您是小企業(yè)或者是個(gè)體工商戶,您可以找人幫忙開發(fā)小程序或者自己在一些網(wǎng)站上進(jìn)行傻瓜式軟件開發(fā)。正如上文所說,現(xiàn)在有很多的網(wǎng)站支持在線生成APP,常用的功能和接口都已經(jīng)設(shè)置好了,操作起來不是很難。如果您是大企業(yè),業(yè)務(wù)多訪問量比較大,我的建議是您應(yīng)該聘請(qǐng)專業(yè)的軟件工程師開發(fā)專門的app,避免后期出現(xiàn)的問題沒辦法及時(shí)解決給您的企業(yè)帶來損失。
不懂的話,找專業(yè)的人幫忙,我就是專業(yè)的
app即application program。應(yīng)用程序。目前手機(jī)平臺(tái)是ios和安卓?jī)纱笃脚_(tái)的天下。本人不才從事安卓開發(fā)。簡(jiǎn)單介紹一下吧你問的這個(gè)問題范圍太廣。ios和安卓開發(fā)語言不同。ios使用的是object_c和swift。安卓是基于java。二者都屬于面向?qū)ο蟮恼Z言。開發(fā)平臺(tái)安卓基于android studio早期使用的是eclipse+adt。不過已經(jīng)被淘汰了。那么怎樣開發(fā)app?首先你需要一個(gè)后臺(tái)程序員寫服務(wù)器以及搭建數(shù)據(jù)庫。其次你的會(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ì)分說明;進(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ā)布
####總結(jié):
Flutter在iOS中AppDelegate繼承自FlutterAppDelegate,所以很多方法必須重寫父類中的方法。iOS的推送注冊(cè)流程還是一樣的。不一樣的是需要給推送設(shè)置別名或者將設(shè)備的deviceToken上傳到推送服務(wù)器,這一步可以原生實(shí)現(xiàn)也可以flutter實(shí)現(xiàn),但是還是需要和flutter進(jìn)行交互,這是就需要注冊(cè)一個(gè)通道實(shí)現(xiàn)這個(gè)。通道也可以增加別的一些例如:信息處理等。
正文:
在進(jìn)行iOS上開發(fā),發(fā)現(xiàn)Flutter創(chuàng)建的項(xiàng)目不走didRegisterForRemoteNotificationsWithDeviceToken,起初以為是沒有設(shè)置UNUserNotificationCenterDelegate,后來發(fā)現(xiàn)AppDelegate是繼承于FlutterAppDelegate的,
也就是將原生的UIApplicationDelegate的方法都會(huì)被FlutterAppDelegate攔截,即使我們不實(shí)現(xiàn)didRegisterForRemoteNotificationsWithDeviceToken,我覺得應(yīng)該有兩種方法可以實(shí)現(xiàn):第一種是需要重寫父類的推送方法。第二種就是在dart文件中監(jiān)聽系統(tǒng)代理,通過通道回調(diào)appdelegate來實(shí)現(xiàn),
下面是百度云推送,重寫父類代理的實(shí)現(xiàn):
在didFinishLaunchingWithOptions launchOptions: 中注冊(cè)原生交互channel
override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]? ) - Bool {
? ? //Flutter Plugin插件注冊(cè)
? ? GeneratedPluginRegistrant.register(with: self);
? ? //調(diào)用appdelegate 的 設(shè)置、注冊(cè)遠(yuǎn)程推送
? ? self.requestAuthorization(application: application);
? ? //Flutter原生交互通道
? ? self.BPushChannel();
? ? //注冊(cè)BPush通道
? ? BPush.registerChannel(launchOptions, apiKey: BPushKey, pushMode: BPushMode.development, withFirstAction: "打開", withSecondAction: "關(guān)閉", withCategory: nil, useBehaviorTextInput: true, isDebug: true);
? ? //禁用地理位置信息推送
? ? BPush.disableLbs();
? ? return super.application(application, didFinishLaunchingWithOptions: launchOptions);
}
//MARK:注冊(cè)遠(yuǎn)程推送通知
func requestAuthorization(application: UIApplication) {
? ? if #available(iOS 10.0, *) {
? ? ? ? UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate;
? ? ? ? UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .sound, .alert]) { (granted, error) in
? ? ? ? ? ? if granted == true {
? ? ? ? ? ? ? ? DispatchQueue.main.async {
? ? ? ? ? ? ? ? ? ? application.registerForRemoteNotifications()
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? } else if #available(iOS 8.0, *) {
? ? ? ? let types:UIUserNotificationType = [.badge , .alert , .sound]
? ? ? ? let settings:UIUserNotificationSettings = UIUserNotificationSettings(types: types, categories: nil)
? ? ? ? application.registerUserNotificationSettings(settings)
? ? } else {
? ? ? ? let types:UIRemoteNotificationType = [UIRemoteNotificationType.alert, UIRemoteNotificationType.badge, .sound]
? ? ? ? application.registerForRemoteNotifications(matching: types)
? ? }
}
//百度推送通道
func BPushChannel() - Void {
? ? //獲取系統(tǒng)的跟控制器
? ? let controller = self.window.rootViewController
? ? //建立rootViewController和Flutter的通信通道
? ? let pushChannel = FlutterMethodChannel.init(name: channelNameForPush, binaryMessenger:controller as! FlutterBinaryMessenger)
? ? //設(shè)置Method回調(diào)?FlutterMethodCall包含了method的Name,ID等信息,?FlutterResult是給Native和Flutter的通信回調(diào)
pushChannel.setMethodCallHandler { (FlutterMethodCall, FlutterResult) in
? ? ? ? print("pushChannel");
? ? }
? ? //綁定channelId到服務(wù)器
? ? let pushBind = FlutterMethodChannel.init(name:channelNameForPushBind, binaryMessenger: controller as! FlutterBinaryMessenger)
? ? pushBind.setMethodCallHandler { (FlutterMethodCall, FlutterResult) in
? ? ? ? //FlutterResult();結(jié)果回調(diào),回調(diào)的結(jié)果只能為string類型
? ? ? ? if(self.channelId.isEmpty){
? ? ? ? ? ? FlutterResult(FlutterMethodNotImplemented);
? ? ? ? } else{
? ? ? ? ? ? print("channelId",self.channelId);
? ? ? ? ? ? let dic : DictionaryString,String = ["channelId":self.channelId];
? ? ? ? ? ? let data = try? JSONSerialization.data(withJSONObject: dic, options: [])
? ? ? ? ? ? let encodingStr = String(data: data!, encoding: String.Encoding.utf8)!
//將信息傳到Flutter,
? ? ? ? ? ? FlutterResult(encodingStr);
? ? ? ? }
? ? }
}
// 重寫遠(yuǎn)程推送通知 注冊(cè)成功
override func application(_ application: UIApplication , didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data) {
? ? //? 向云推送注冊(cè) device token
? ? print("deviceToken = %@", deviceToken);
? ? BPush.registerDeviceToken(deviceToken as Data)
? ? // 綁定channel.將會(huì)在回調(diào)中看獲得channnelid appid userid 等
? ? BPush.bindChannel(completeHandler: { (result, error) - Void in
? ? ? ? if ((result) != nil){
? ? ? ? ? ? self.channelId = BPush.getChannelId();
? ? ? ? ? ? BPush.setTag("MyTag", withCompleteHandler: { (result, error) - Void in
? ? ? ? ? ? ? ? if ((result) != nil){
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })
? ? ? ? }
? ? })
? ? super.application(application, didRegisterForRemoteNotificationsWithDeviceToken:deviceToken)
}
// 重寫注冊(cè)失敗
override func application(_ application: UIApplication , didFailToRegisterForRemoteNotificationsWithError error: Error ) {
? ? print("deviceToken = %@", error)
? ? super.application(application, didFailToRegisterForRemoteNotificationsWithError: error)
}
**如果解決了你的問題,點(diǎn)個(gè)贊唄!**
如果要在殺掉app情況下收到推送,需要在不同的手機(jī)渠道商處注冊(cè)
網(wǎng)頁題目:flutter邀請(qǐng)注冊(cè),flutter登錄
當(dāng)前地址:http://chinadenli.net/article28/dsgohjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站制作、域名注冊(cè)、軟件開發(fā)、服務(wù)器托管、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)