蘋果App的編程難嗎?

2017.04.14深夜失眠ing

來彙報一下吧~先鼓掌!!app已經完成了!以我閨蜜的小名命名:lalamap;之前設想的功能已經全部是實現了,非常好用,適合吃貨誒!

感謝@皮亞諾余項大大,完成了程序的編寫,使這個天馬行空的生日禮物得以實現!全程耐心地優化我的各種外行要求,這段時間非常的開心和令人難忘??!在彭哥的支持下,最後我只提供了一點點建議和設計了app圖標(稱得上設計嗎hhh )就見證了app的誕生!

感謝@勾健大大的內測安裝的幫助,真的好厲害!期待明天一個大大驚喜!!!

------------------------------以下原問題:

閨蜜四月過生日,想送她一個app做生日禮物。

她說過想要一個可以自己做標記的DIY美食地圖軟體。因為她用的蘋果,所以就不討論安卓啦……我自己大學裡學過一點py,不精通,入門。想寒假裡勤學苦練能不能磨個禮物送給閨蜜,根據她的描述感覺功能很簡單,但我不知道自己需要什麼程度,有大佬能拉我一把嗎?

2017.01.11補充

沒想到這個問題出來那麼多大佬,真誠的謝過各位大佬:)我本科是生物系的所以對計算機的要求不高,但是有一點小興趣所以py的課程學的還是很認真。

下面簡單說明一下我之前提到的閨蜜願望的美食地圖app:)我們常常被種草各種美食,總是被安利口碑料理店鋪。有的來自微信公眾號的推送,有的來自萬能的朋友圈動態,有的來自朋友口頭推薦或者聊天一言不合就發來一個鏈接,告訴你不吃後悔一輩子,有的來自於微博活動,有的來自於知乎體驗,有的甚至只是因為偶然的聽說。

有一天也許來到了某家曾經想要去過的店面附近,然而你卻根本想不起這附近有什麼心儀的菜品。打開大眾點評,也許一家名不見經傳的小店裡的壽司就是曾經被美食大v捧上天的難得一見,你因為不知道錯過了,選擇了一家風評五星的餐廳。

所以我們需要美食地圖。

美食地圖需要導入中國的地圖(最好是高德)數據(我不確定「導入」這個詞語用的對不對)

用戶打開界面後,輸入地址或店鋪名,就能前往餐飲店所在位置的地圖界面,然後用戶可以選擇【種草】進行星標,含有插入圖片功能,用戶可以將推薦給自己的信息來源截圖保存在此處(eg. 如來自和朋友微信聊天的截圖,朋友圈安利的截圖,微博截圖,戶外廣告照片等)我感覺此功能也可以幫助店家分析各營銷投入效果,後期app可以開通「我是商家」功能的話。

然後當用戶在某一位置定位的時候,可以顯示周圍的星標餐廳,點擊餐廳名字可以查看種草日期和種草原因。

當用戶拔草以後可以對餐廳進行評分。星標圖標消失變為【去過】(這個環節暫時沒有詳細的設計好)

總之這個就是私人DIY的美食地圖,每月或者每年可以生成圖片的形式保存分享(閨蜜希望這個app儘可能私密化)

這兩張圖片是高德地圖的定位和星標功能的部分截圖。主要是簡潔化,然後我去掉了除標記美食以外的功能圖標,且高德地圖的星標較弱不夠明顯,然後不能滿足上傳種草原因圖片功能等(手機端沒法上傳圖片?)

最後再次感謝!!


相對於寒假磨這短短的一個月時間,這個時間要求下,零基礎很難,可以說不可能完成。

提煉一下需求。題主要求的是:「自己做標記的DIY美食地圖軟體」,姑且要求不要在APP Store上架,只在閨蜜的手機上跑起來,那麼涉及到的內容如下:

  • 百度地圖API的基本功能使用。主要用於定位當前店鋪位置,展示已有的位置標籤,便於直觀的展示城市裡的美食位置。

  • 數據持久化,也就是保存數據的問題,不能每次啟動都清空數據。如果再去了解sqlite資料庫的使用,了解封裝過的第三方庫如FMDB之類的有點得不償失,我們為了簡單的達到效果就好,所以可以用NSUserDefaults存儲字典數組完成,簡單的存儲一下這些欄位就好:店鋪名字,位置,好吃的東西,添加記錄的時間。
  • UITableView的使用,用於以列表形式展示記錄的數據。
  • 簡單的搜索功能,用於按照關鍵詞搜索已有的記錄。
  • 添加和刪除記錄的功能。涉及到的和第二條一樣是關於數據的問題,難度不大。

難度主要不在這些東西怎麼用,而在於完全沒有基礎的情況下,怎麼看懂這些東西,何況有些很基礎的概念,比如字典、數組也是需要花時間去了解的。

綜上所述,莫怪我給題主潑冷水,寒假做點其他有意義的事情吧,不要在這種事情上浪費時間。

簡單點,找個懂這個的朋友,做出來大概三天,美化下大概兩天,算上喝咖啡吹牛扯淡的時間,一個星期完成,就能用了。然而,這樣又失去了「自己親手做的禮物」的美好寓意,攤手。

最後,這個禮物真是新奇,第一次聽說生日禮物送app的,搞的我差點就想說:「xxx,男,兩年開發經驗,要求薪資xxx「了。


蘋果什麼的 app?iOS 相對容易,macOS 邏輯有點擰,不過寫熟了也挺容易。


其實你可以自己規劃和設計這個應用,然後出錢找人來做,從時間成本和可行性來講是最高的,而且因為是你設計的,意義也有了。代碼誰寫的無所謂。


詳細的功能請私信我。

我免費幫你做 (??????)


要是你閨蜜的手機沒越獄,你還得申請一個99美元的開發者賬號.我也是醉了,IOS開發門檻還是挺高的,功能實現不難,但是從入門到寫出來也得花好長一段時間.


不難,但是

我不知道你的技術如何。每個人的學習能力是不同的。有的人可能 2 ~ 3 周就可以從零基礎做出功能較簡單的 App,但不是所有人。

同樣的功能可以有很多種實現方式。選擇權衡,你會發現這個涉及到 Software Engineering 的東西甚至還不止。除此之外,複雜的東西甚至還更多,比如 Networking 這種看起來封裝 HTTP 請求的不難的東西你一要想好還是用現成框架的話有什麼開源庫(AFNetworking Alamofire / MKNetworkKit 以及林林總總),二是,深究其原理,你甚至要了解網路請求從 request 到 response 在 TCP/IP 每層協議經歷了什麼,實際開發中怎麼從 socket 到你的 HTTP,還有,多線程?為什麼網路請求要非同步,同步怎麼會阻塞 UI,網路訪問結束以後怎麼刷新數據(簡單的比如 tableView.refresh())?你還會聽說 ReactiveCocoa 或者是 RxSwift……坑是沒有底的,還有 UI 呢?還有你怎麼管理你項目的開發進度(多少軟體項目栽在了這上面?……

當然也不是說你要做 App 必須懂所有的知識,但是你要做好面對技術挑戰的準備,這個必定是有的。

P.S. 大一做過一年 iOS


謝邀

先拋結論:一定程度上說可以

先說你送閨蜜一個App作為生日禮物的想法很好很棒,真為你的閨蜜感到高興。

然後你說你學過Python,但iOS開發是用Object-C或者Swift語言。Python和OC不太一樣,和Swift倒是有些相似。所以基本對於iOS開發你算零基礎。

接著你說你想通過寒假的時間來完成這個App,現在離寒假還有幾周,你們放假應該也放個幾周,那我就滿打滿算從現在開始算你有整整30天的開發時間好了。

當然最影響這件事能不能成的關鍵在於你想要做一個什麼App,你說是『一個可以自己做標記的DIY美食地圖軟體』

根據你這麼一句話的需求,別的你也沒說,我也不清楚,那我就按我的理解幫你分析下:

最簡單是做成怎麼樣呢?

1.就是打開App會全屏出現一張地圖,類似於高德地圖App的樣子

2.當遇到想標記的地點就在地圖上點一下,然後會打上一個美食標記。

(如果你可能覺得一個標記不好區分是咖啡店呢還是小吃店,那在點擊的時候還需要有個選擇標記種類的過程)

3.有種草當然就有拔草了,萬一有一天你覺得某一家東西不好吃了,你還需要把以前的標記給刪除,那就要有刪除功能

(如果有多種標記那應該也要換標記的功能)

4.然後要有保存功能,總不能你退出了App這些標記都消失了吧。所以至少應該有本地儲存信息的功能

(保存雲端就算了,這麼點時間來不及學習開發)

好,實現上面這4步,我覺得對於一個零基礎的人30天,硬著頭皮上應該是還是有希望的。

大概這麼規劃

第1~5天:熟悉Xcode、知道App怎麼在手機上跑起來、知道怎麼在App上顯示控制項、知道怎麼讓用戶點擊按鈕實現一些功能等

第6~12天:知道怎麼調用蘋果的地圖API,怎麼定位,怎麼在地圖上創建一個標記(大頭針),知道怎麼更換標記的圖片,怎麼刪除標記

第13~18天:知道怎麼創建一個新視圖讓用戶選擇標記的圖片,知道怎麼創建一個彈框詢問用戶是否刪除標記

第19~22天:知道怎麼得到標記數據,怎麼保存標記數據到本地。

第23~25天:測試,修改bug

第26~27天:申請開發者賬號,並得到許可

第28~30天:知道怎麼提交並提交App

這樣再過個5~8天你的App基本上就能審核通過並在App Store上下載了。

恩,加油吧,也可以看看我專欄的一篇文章希望也對你有幫助

『零基礎學開發經驗分享』: https://zhuanlan.zhihu.com/p/23002142


我首先不談編程難不難。題主先買個蘋果的開發許可吧。當然,個人授權只能通過AppStore發布,會有各種審核要求,先去學習一個。那麼再多花幾倍的錢,就可以搞到企業級開發賬號,是允許in house發布的,你就可以直接給你閨蜜的手機裝上啦。

什麼?這太複雜了,那就拉倒唄。


iOS開發現在門檻不低。

iOS開發以前很容易做。我說的是iOS2.0(當時還叫iPhoneOS)。而現在iOS已經出到了10,系統API變得越來越複雜,坑很多,需要兼容的設備也多,第三方庫成熟但是版本也多,還要考慮Objective C和Swift的不同。

針對你的情況,做這樣一個單機地圖標記app,你需要掌握的最起碼的知識點有:

- Swift語言

- Xcode,包括Interface Builder

- iOS基礎庫

- UIKit

- CoreData

- MapKit

現在就行動,邊看邊做,你應該可以在四月份之前折騰出來。我們這裡假設的是單機app無網路處理(避免學習非同步處理),數據用CoreData存儲在本地(避免學習Sqlite),UI只使用系統默認控制項並儘可能地簡單(複雜UI和高級動畫效果需要的經驗和開發時間成指數增加),只支持iPhone豎屏(避免學習自動布局),只支持iOS10(避免向前兼容問題)。以上幾個知識點對職業程序員而言,如果要做到完美無缺,每一個都可以是深坑,就比如自動布局算動態高度,每一代iOS都略有不同。深入研究對題主而言並不現實,做到「能跑」就很不容易了。

至於提交到App Store讓你的閨蜜從官網上下載,我勸你還是放棄這個念頭。App Store對提交的程序要求很高,初手習作是通不過審核的。你只能把你閨蜜的手機ID號拿過來用開發者模式裝到她手機上。

總之,做個app表心意沒問題,但要達到零售級質量,零基礎3個月是不可能的。要不你花點錢外包咯。


補充一句,如果只是為你閨蜜一個人,可以不用開發者賬號。

1.把你閨密手機借過來,Usb連接到電腦上,在Xcode上點運行就可以。

2.找一個有蘋果開發者賬號的人,把你閨蜜手機的udid加進去,然後把App用證書打包出來,接著上傳到http://fir.im,然後把二維碼發給你閨蜜,掃碼即可下載。如果有需要你也可以找我幫忙。

最後祝你完成這個小禮物


很難。

1,你小看了自己的需求,隨便找個人說需求都會奇葩的要命,越業餘開發需求越業餘,希望你深刻理解這一點。

2,妄圖用現有組件或者所謂開源組件直接搭個自己滿意的app,你高看了默認組件的能力和開源組件的質量,能力。

3, 1和2之間有個超級巨大的落差。


為嘛沒人懷疑她是HR?


iOS APP開發成本還是有點高的。

1:最基本的準備工作。首先你最好得有個Mac,99美刀你只給你閨蜜安裝是不需要的,連上mac就可以。

2:選擇swift開發。現在iOS 開發的話主要是OC和swift ,學過Python 推薦選擇swift吧,零基礎的話OC可以算的上火星文,swift 畢竟在語法層面接近一些主流的語言。

3:熟悉下Xcode的基本操作,你的需求直接用StoryBoard好了,拖界面,有點要注意的就是約束的設置問題,不過storyboard的約束比起手寫還是快得多,界面不複雜足夠了。另外就是Xcode 中的調試,真機測試等等,Xcode 的功能還是十分強大的,我還會用來寫C,C++....

4:地圖的話有百度SDK,基本能滿足你的需求,還算好用吧,文檔多看看,嚴格按照文檔操作,不然一堆編譯問題不知道你能不能解決了...

5:學習資料庫,iOS 一般是sqlite,這個沒什麼難度。

總體上就這麼多了,2,3,4可能需要的時間多一些,關於swift資料也不少,但視頻資源極少,文檔多看看了。


寫個html吧。。。簡單實用,作為感動你閨蜜一分鐘的禮物足夠了。而且動畫效果炫,女生自古看臉,誰在乎你用多高深技術?炫就行了。


1、有一台Mac,裝有Xcode,創建一個項目,登錄你的蘋果賬號,把iPhone連接到Mac,Xcode8及以上,會自動創建真機測試證書,點擊運行,iPhone上會顯示你app圖標。

2、學習基礎,還是用oc吧,資料案例多;用故事板布局,簡單方便;學習一下按鈕的點擊事件等等。

3、就不要用伺服器存儲了,學習一下sqlite資料庫,存儲在手機本地。

4、在百度或者高德地圖,創建一個應用,學習一下他們的demo,看看如何在地圖上做標記。

5、把所學的東西整合起來,時間還是來得及的。

6、最後把你閨蜜的手機要過來,安裝一下,大功告成。不需要上傳AppStore。


說要交99刀的朋友,你們得與時俱進一下,從去年開始就可以免費真機部署了。

Xcode - 新增特性 - Apple Developer

所有人現在都可以在 Apple 設備上製作並運行 app。

現在,藉助 Xcode 7 和 Swift,每個人都可以更輕鬆地直接在 Apple 設備上製作並運行 app。只需使用您的 Apple ID 進行登錄,即可按照自己的想法在 iPad、iPhone 或 Apple Watch 上製作觸控式 app。下載 Xcode 7 並立即嘗試。無需計劃會員資格。


開發之前需要仔細考慮的

  別做拍腦瓜的決策,在開工之前你需要考慮的比你想像的要多。我通常會幫助或者指導客戶把以下幾個要素都過一遍:

  一:和客戶談他們的移動應用,最讓我吃驚的是他們從來沒有想過支撐一個iPhone應用運行,背後需要涉及到的方方面面。他們想像中的iPhone是獨立存在於這個宇宙的,是如此的簡單,以至於他們要我很快就給出一個項目預算報價,而不用討論諸多細節。我問他們:「你們是否考慮過後台伺服器的事情?你們的應用需要和後端伺服器做數據通訊?」

什麼,聽不懂?好吧,我用地球人的語言再把這個問題一遍:「你們的應用不是需要用戶註冊嘛,你們考慮過把用戶的數據存放在哪裡了嗎?我們需要一個地方去保存這些以後會用到的數據。」

第一次碰到這樣的客戶時,哥簡直就怒了。後來我發現這不是客戶的錯:我是搞編程的,CS架構對我來說就像吃飯睡覺一樣是不假思索的東西,而我的客戶儘是些高富帥,他們懂個毛CS架構!

  所以,如果你不大懂技術,那請仔細聽我說:如果你想做的移動應用需要用戶註冊和登錄,或者你想隨時控制移動應用的一些輸出,甚至是你僅僅是需要一個用戶反饋意見調查表這麼簡單的功能,那麼,你得搞一台後端伺服器。

  二:好了,現在你知道你需要一台後端伺服器。同時你還需要想辦法讓你的iOS應用和你的伺服器能夠對話,就是相互間接收數據什麼的。不,這個問題不是簡答靠什麼標準的即插即用的東東就能解決的,不是你們想像的那樣!所有的東西都需要定製化開發,這就好比發明一門語言:你希望你的伺服器和你的應用之間能夠通過一種語言溝通,但是你不希望其他人聽得懂這門語言。

  用行話說這就是制定伺服器端API介面,或簡稱API。這些API應該在開發iPhone客戶端之前就到位了。為什麼?因為你必須先規定好一門語言的單詞和語法,然後才能用這門語言說話吧!?好了,這就帶出了第三點—如何開發這些API。

  三:API的成功定製是項目成功的一半(反之亦然),所以千萬不要掉以輕心。你要考慮你的業務數據模型、業務流程、調用業務需要提供的參數、特定事件發生時數據間該如何互動等等。簡單來說,我們要做的就是開發一個網站,上門跑著你的業務流程,只不過這個網站的所有運行結果都不是通過網頁形式展現出來,而是呈現在一行行的文本和數字中。舉個例子:一個登錄成功的反饋頁面僅僅包含YES一個單詞。

  iPhone應用需要訪問這些預先定義好的介面,並且按預定義格式提供必要的輸入(比如用戶名和密碼),然後要對伺服器端的反饋(YES或者NO)做出解析處理。所以,沒有什麼移動應用能夠自動的含有用戶註冊和登錄功能。

  伺服器端開發需要考慮的問題太多了:選擇伺服器,選擇用什麼語言開發,主機放在哪裡才能增加訪問速度,等等,這裡我就不展開了。如果這一切對你來說很陌生,那麼你最好去問問團隊里的技術負責人,或者乾脆讓開發人員做決策。

  四:所以,關於伺服器端API,你或者讓自己的技術團隊把它開發好,再將完善的API文檔交給iPhone應用開發人員;或者你支付iPhone應用開發人員額外的報酬來搞定這些。你找的iPhone應用開發人員可能會伺服器端開發也可能不會。如果他會的話,我建議最好讓他也同時負責伺服器端開發,因為他最清楚iPhone應用中需要哪些伺服器端API。

  如果你的伺服器端API已經存在了,那麼除了向iPhone應用開發人員提供相關文檔之外,你還要考慮讓他能夠便捷的同伺服器開發團隊溝通,因為大多數情況下,iPhone應用需要在已有API基礎上增加一些新的介面。

現在我們來看看iPhone應用開發本身

  扯了大半天,我們終於開始談iPhone應用開發本身了。一般來說,iOS平台上做所有事情都不能隨心所欲。你最好在開發人員寫代碼之前把所有的需求都確認好好。這和開發網站不一樣,按照實現簽訂的合同開發iOS應用,開發過程中對需求變更的容納度可能很低:

用戶界面:無論你打算採用iOS標準界面還是自定義元素,在開發開始前一定要確認清楚,因為應用的程序架構是根據界面和用戶使用流程來設計的。一個很好的例子就是在界面底部使用了iOS標準的標籤欄(TabBar),此後如果你想讓標籤欄裡面的圖標變成彩色的,這個代碼改動量可沒你想像的那麼小!

代碼之間的耦合:如果是開發網站,你可以隨意的添加一個頁面或者一處鏈接。做iOS應用就沒有那麼簡單了,很多東西一開始都要設計好,後期的一處改動會牽連很多東西,具體原因是你無法理解的。iOS應用的代碼寫好之後,再改動行不行?行!但必須小心。

這就像設計電路板一樣,如果你不小心把那根線搭錯了,整塊電路板就會不工作。有人說架構優良的程序可以有很高的延展性,那純屬紙上談兵。在About屏幕上添加一個電子郵件按鈕可能只需要幾行代碼的工作量,而添加一個轉發到新浪微薄的按鈕(譯者註:原文是添加一個Facebook Like)就完全不是那麼簡單的事兒了!

讓一個iPhone應用同時也支持iPad:如果要評選最坑爹「需求變更」,那麼這個絕對是當之無愧的。理由很簡單:支持iPad根本不是TMD什麼附加功能!iPad應用基本上都比iPhone應用來得要複雜,界面設計和用戶體驗也大不一樣。我問你,製造一輛電動自行車,然後把它改裝成一部燒汽油的摩托車,這能是一回事兒嗎!?電動自行車跟摩托車看起來是很像,但是製造它們完全是兩碼事。

  拿廣受歡迎的Facebook官方應用來說,它的iPhone和iPad版本看似相似,實際用戶操作流程完全不同。不僅僅是界面上的不同會帶來額外的工作,對後台伺服器API的需求也可能不一樣記住,iPhone和iPad應用的用戶體驗需求是完全不一樣的。

準備好開始了嗎?

  希望此文能夠幫助你和你的團隊了解移動應用開發幕後的方方面面。除非你們要做一個像計算器那麼簡單的單機應用,否則你們很難用極低的成本搞定。綜上所述,如果你覺得外包成本太高,那你只好招人自己開發。

  當然,如果你決定了要外包移動應用開發,那麼我還要提醒一點:公司政治。如果你是在一家大公司或者有著嚴格制度的機構裡面幹活,那麼幫助合同開發者搞定那些個規章制度上的繁文縟節,對你來說是非常重要的一項工作,必要的時候甚至可以做一些政策上的變通。

我同幾個大型企業客戶接觸過,當我要求看他們的伺服器端數據介面的時候,他們流露出很不安的表情。我想這或許是因為他們受制於公司規定而不能透露信息,這無可厚非;或者他們還沒有想好這種情況下該如何操作;或者他們的品牌制度蛋疼到需要在移動應用的每個屏幕上都擺著公司logo!最終我沒有和這樣的企業客戶合作,因為我無法想像如果有一天我需要增加一些伺服器端API介面的話,和他們的規章和流程折騰,那將會是多麼悲劇的事情。


必須答一下,以前是iOS開發,會一些後端node.js.目前是產品經理。畫原型,因為功能簡單交互較少,畫原型大概2小時,可以出一個簡單版原型。後端一天或者兩天,iOS 端集成高德地圖,標記,形成記錄。需要兩三天的樣子。請一個全棧的同學的話大概三四天就能給個基本版本。


說一下準備工作吧

首先你得有一台mac,筆記本或者mac mini都無所謂,在mac上面裝上xcode,還有一台iPhone,這是硬體必須。

第二個關於很多人說的99刀每年的個人開發者證書並不需要,從xcode7開始已經可以真機測試了,直接手機連上xcode,運行的時候設備選擇手機就可以運行到手機上面了。

第三個對於編程語言我建議你選擇swift,因為OC估計一時半會你會難以接受,剛開始接觸的時候可能會有點想吐。語言還是建議用swift,代碼量也會少很多。先學簡單的界面搭建。還有界面可能要學一下autolayout,可以用storyboard拖線或者代碼控制,建議還是用前者。至於數據持久化就直接就直接用最簡單的,不要用資料庫了,上面也有人說了,用NSUserDefault。還有關於地圖怎麼使用,可以去高德地圖的開發者平台看文檔,可以先把demo跑一遍,知道大概哪個類實現的是你要的功能。這些知識大概的技術要求,當中還會有很多細節的地方。

最後很不忍心的打擊你一下,以你個人很難在完成兩三個月的時間完成,當中肯定會碰到很多問題,只要一個問題可能就會卡你好幾天。除非你有一個幫手,例如我(機智臉),包括上面有那麼多人都願意幫助你,相信你只要開始做了, 估計最後也能完成,但不一定能按時完成,但是都有這個心意了,來不來得及又有什麼關係呢。

所以,去吧,皮卡丘。


真好啊,當初我也是因為想給ex一個驚喜。純粹不求回報的感動,有問題可以問我。


推薦閱讀:

你在提交蘋果 App Store 審核的過程中有些什麼奇葩體驗?
App Store免費榜、付費榜、暢銷榜的排名規則?
App Store 的「限時免費」機制有何優缺點?
APP Store 首次上線應用 如何加急審核?
App Store中有什麼好的吉他軟體推薦?

TAG:設計 | 編程 | AppStore | iOS開發 | 應用程序Application |