• 几个月前,面临Android和IOS的选择,找了一些资料,大部分...IOS从一无所知到精通大概需要多长时间? 刘虓震,女,环境咨询工程师 107 票,来自 谭永学、阳端、陆玄枵  最近有三个相关问题

    几个月前,面临Android和IOS的选择,找了一些资料,大部分来自知乎,摘录如下:


    ——————————————————————————————————————————————————————————————

    IOS从一无所知到精通大概需要多长时间?


    刘虓震女,环境咨询工程师

    107 票,来自 谭永学阳端陆玄枵 
    最近有三个相关问题都是你问的吧?我刚在其中一个回复了。现在重定向到这里来⋯⋯

    正好我也在从头学iOS开发,一点个人理解供参考:

    斯坦福大学有公开免费的iOS开发课程CS193P,上课视频、讲义、作业一应俱全。
    这门课程的预修要求是另外两门课:CS106A/CS106B. 
    这三门课的视频都有中文字幕。可惜并不全,后面会详细讲。如果你的英文程度足够好,当然就无所谓中文字幕了。

    CS106A即编程方法学,该课无预修要求,是斯坦福大学的校选修课。非理工科学生也可选。第一堂课老师说:你只要知道如何开关机就能学这门课。既然你能上知乎,我想学这门课应该没有问题了。
    网易公开课:v.163.com/special... (28集中文字幕全)
    斯坦福公开资料:see.stanford.edu/see/course...

    CS106B即抽象编程,该课的预修要求是CS106A. 所以上完前面一门课继续上这门就可以了。不过这门课的中文字幕迟迟没有翻译完成。
    网易公开课:v.163.com/special...(27集翻译至第8集)
    斯坦福公开资料:see.stanford.edu/see/course...

    斯坦福推荐在修CS193P之前最好再修一门CS107编程范式:
    see.stanford.edu/see/course...
    目前没有看到公开的中文字幕,但是人人影视去年招募志愿者翻译,看情况已经在进行中了:
    yyets.com/thread-2...
    等你学完前两门课,可能他们也能把这门课翻译个八九不离十吧。 

    CS193P在网易公开课上也有字幕,但是是针对iOS4.0版本的。斯坦福去年已经推出针对iOS5.0版本的课程。幸运的是,CocoaChina上有人自己在翻译,目前译到第12课。
    CocoaChina中英字幕版:cocoachina.com/bbs/read...
    斯坦福公开资料:stanford.edu/class...

    CS193P学完以后,你肯定能自己制作出有意义的iOS App并将其上架了。但是要成为真正的iOS developer,个人认为还是有一定距离。做一个高效的,具备商业价值的编程人员,至少要懂一点算法。如果做个人开发者,还要略懂美工和市场推广。这里只谈算法部分。

    MIT公开课里有一门算法导论,也有上课视频:
    v.163.com/special... (24集译至第7集)
    官方课程页面:ocw.mit.edu/courses...

    但是在修这门算法导论之前需要掌握一定的数学知识,主要是离散数学。对此MIT公开课里有专门的一门Mathematics for Computer Science. 
    ocw.mit.edu/courses...
    这门课没有上课视频,并且毕竟是数学课,很抽象,所以学起来要吃力些。好在该课程的阅读材料,讲义和作业也有中文翻译。在上面的网页中,左侧有个“简体字”链接,点进去就可以看到了。

    至于需要多长时间:
    国外大学的课程一般是这样的:每一个课时需要三倍的课下学习时间。以CS106A为例,28个课时,上课本身加课下学习时间,大约是84小时。如果要学完最低限度的三门课,约250小时。如果要学完上述全部七门课,大约是590小时。根据以上的计算方式和自己每天可以投入的学习时间,相信你可以自己算出来需要多长时间。

    当然,这是对一般的美国大学本科生而言的(而且是斯坦福和麻省理工的学生⋯⋯)。如果你的英文程度不够好,对这些课又没有任何基础,同时还没有同学和助教的帮助(对于这些较基础的课程,学校全程配备助教,每周面对面辅导),可以想见会需要更多时间。

    所以,在此推荐我的公开课学习博客:hohopencourse.diandian.com/
    以个人开发iOS App为目标,含有我全部的学习计划、笔记和作业。每天学习一小时。有问题可以私下联系我进行交流。


    刘志托IT项目经理

    8 票,来自 董锐何家春小张 更多
    操作系统是指操作系统原理 ,而不是仅仅指windows
    学好基础和原理,是让你对程序运行,等有更深刻的认识,写出的代码更有效率,更健壮
    但是以我个人和绝大部分的朋友来看,在学校里光学原理,没有几个是认真的。建议你先写一到二个小程序,然后再思考自己的程序可以怎么样优化,让效率更高,资源占用更少,代码更清晰,维护更简单。在有了代码经验的基础上,再回头看看代码的重构这样的书籍,会理论和实践结合比较好。再做一个多线程读同个资源,写资源的小程序,再看看操作系统原理,应该会有更深一点的理解。
    ios和android开发,以我带应界毕业生的经验来看,定好一个应用程序需要做什么功能,先给自己定个小范围,功能不要太复杂,然后去开发,网上的教程很多了,3个月左右会有很大的进步,半年左右会有模有样的。
    以上也仅仅是我在多年学习过程中,对技术慢慢积累,的一些学习入门的方法。入这行,每次去看一次重构、模式等,都有进一步的理解。当然也有很多时候会思维定势,转不过弯想东西,建议多诳技术论坛,多与人沟通。这样进步还会加快。
    最后送给你的是,多帮助别人,别人会更加和交流,问你问题。在回答别人问题的过程中,你会收获价值感,成就感,促使你要向更高更好的地方学习,也为自己提供了动力。这个也是我在进步的过程中,比较有效的一种方式。


    冯 子力工科学生,Apple 控,日语控,想做个善…

    9 票,来自 许艺彬王宏翔Rhythm 更多
    最重要的是,我建议一定学好英文,以学习 iOS/OS 开发为主要目的的话,甚至不需要非常全面地学习英文,技术英文能力是很容易通过突击提高的。尤其不要让英文成为心理负担,而排斥英文的文档资源。

    比起各种教材,请重视阅读苹果官方的文档

    我个人也推荐 Stanford 在 iTunes U 推出的 iOS 开发教程,讲解比较清晰,比起一些国内教材,不容易让人学完之后仍然过长时间徘徊在大学生作业的水平。当然,这套视频教程本身作为入门级教程,也不要抱太高的期望。深入地了解和获得解决实际开发问题的能力,需要实际的长时间磨练才可能。

    买一个 iOS/Mac Developer Program,通过实际项目锻炼自己的能力,不要吝惜那每年区区六百块钱,那同时也是你合法获取苹果文档的入口。

    不要不知道 GitHub。在自己开始大量闭门造车之前,阅读几个上面共享出来的项目,熟悉苹果平台的设计风格和逻辑。

    在实际项目开发中遇到的具体问题,强烈推荐搜索 Stack Overflow 这个技术问答网站。基本上所有问题都会找到耐心的解答。你也可以逐渐主动融入其中的问答去,只是请注意,在提问时表现出你已经做了充分的研究和探索,花别人的时间要求回答是必要的,而不只是想吃白食。另外,CocoaChina 上面的一些讨论也比较有质量,而且我们不能否认阅读中文的速度可能还是比英文稍微快一点点。

    你现在还在会纠结 Xcode 和书籍介绍的操作界面不一致的入门阶段,这完全可以理解。我相信只要你多少花点时间上去,这个痛苦的阶段不会很长。之后,建议你不要限定于特定的一种或几种学习资源,要学会由概括到具体地理解苹果平台的一切。看书的应有顺序绝对不是从头到尾,而是从粗到细。学会看目录,学会用自己的探索主动地建立知识架构,而不仅是书籍的灌输和具体细节的学习。那时候,你就不会在意自己看的是什么书了。最后再重复一句,比起看书,你要做自己感兴趣的项目才提高得快。


    iOS 或 Android 开发者们,你过去几年最大的成长是什么?


    王亞暉做過幾款app,3年iOS開發經驗。

    31 票,来自 李智辉snuc陈丘 更多
    成長?好問題。把初戀送出去了……
    ======================騷氣的分割線=====================
    玩笑結束,正文開始。
    其實這三年做iOS是我做計算機以來成長最多的時候,主要是四點。
    • 眼界的開闊,在做iOS之前整體見識比較短淺,基本上看的都是國內的站長論壇在做網站,即便做手機開發接觸的也是國內的那些無良廠商,對於產品的類型和其他內容想的都不是很多,在做iOS之後開始接觸到了各種新鮮的知識,同樣直接接觸到了國外更多更有意思的想法。
    • 技術的更迭,我第一次接觸MVC的東西居然是做iOS。這是真的。很多優秀的技術思想都是在做iOS的時候學到的,甚至我現在學HTML5也是爲了做移動開發,很大程度上這幾年很多有意思的技術都是靠移動平臺推進的。
    • 第一次覺得自己離成功如此之進,iOS是我第一次發現,原來自己和用戶的距離如此之進,當然我本身沒有賺到錢,否則也不用苦逼的在這裡回答問題,但是激勵了我不停的去寫東西,至少我做的東西能夠輕鬆的推到用戶面前。
    • 程序的美感,不知道是不是只有我有這種感覺,就是在這個之前我做遊戲不是很主動交互設計和用戶介面,但是在接觸iOS之後對於這些本來不該程序考慮的事情格外重視,甚至超過了程序的本身。
    :wq
    3月12日 · 13 条评论      

    Yop2年iOS技术累积

    24 票,来自 Lans杨曦Jenny 更多
    看到这个题目,有点感触,因为自己这两年的职业发展和机遇,正是从接触了iOS之后开始的。

    分几个阶段描述一下接触iOS以来自己的成长吧,也顺便在此为自己留一个纪录:

    1)初识iOS
    我的第一份正式工作是在香港当一名初级工程师,某天很要好的同事跟我介绍说iPhone的app开发很不错,appstore的模式独立开发者也可以做,约我一起创业做游戏。我答应了。
    辞职之后因某些原因,他去了另一家公司上班,我则自学独立做了个游戏放上了appstore。

    这个阶段经常在cocoachina上面泡销售版,学了相当多和appstore相关的东西。虽然只有一个产品,但是对整个开发环境认识较深。

    2)项目经理
    游戏上线之后,由于本人对市场和销售毫无热情,因此并没有赚得第一桶金><
    在我贫困潦倒的时候,一老友的朋友接触了我,邀请我过去他们公司负责iOS这块的发展,创业公司。
    一周后我凭借对其产品的认识写了一纸文档,很偶然地被boss看到,便成了所谓的项目经理了。当时公司在6人左右。

    这个阶段是我第一次在正式工作上进行团队合作(大学时期有短暂的非正式项目的管理经验)。首次在创业公司工作很有趣,收获了一群很好的工作伙伴。

    3)产品经理
    之后半年,公司成长到20人规模,而我的工作重心也从原来的项目开发管理转移到产品的规划和设计,人员的招聘和培养方面。公司氛围很融洽,我至今怀念。当时很经常和boss讨论产品,争论盈利模式,也越来越多地涉及到公司发展层面的问题。

    这个阶段可以说是我成长最快的阶段。视野从员工的角度提升到了公司的层面,而且在一个快速发展的创业公司,体验到了创业的快乐和艰辛。期间还进行了较多的有益的阅读及实践,管理技巧也有所提升。最后是由于产品经理的定位,真正开始关注互联网和互联网产品(本人之前职业重心在于游戏行业),感觉逐渐确实地踏入了IT行业了。

    4)创业者
    上阶段后期,我在网上认识了我现在的合伙人,两人有着共同的游戏梦,它是设计师,我是工程师,一拍即合。随即我第二次北上,创业。创业的过程不得不说是很有趣的~ 有困惑,有成就,有诱惑,有赏识,有各种欢呼和喜悦,也有各种苦难和压力。直至这一刻,我们穷得身无分文,却对前景充满期待,甚至迫不及待。

    在这个阶段,开始抛弃各种想法和空话,踏踏实实地一步一步往前走。得到了宝贵的创业伙伴,结识了很多朋友,接触到了以往无法触及的生活。开始经营自己的人脉,开始培养自己的影响力。

    5)合作者
    最近一段时间,开始为投资的事情奔波,开始结识到一些经验资源有一定累积的人,也结识到了许多走在我们前面的人。机会和机遇接踵而来,我们现在所面对的,是未来的可能性。

    期待,一年之后的自己又会是哪种形态?
    3月12日 · 4 条评论      

    朱磊沉浸在移动互联网的浪潮中.

    20 票,来自 Josn猿人先森Jenny 更多
    Android开发者

    09年6月份去买的Android手机,09年底写出应用,随即加入创业公司至今.
    A. 眼界开阔
    在做Android之前做的是银行外围业务,实在是厌恶了那种说话不算数,各方推诿责任的工作模式.几十人干了快一年,还没有人用过,挫败感太强了.接触Android后,差异感太大了.
    1. 原来只用一周就可以完成一个小产品;
    2. 原来这个东西放出去还能挣钱;
    3. 原来有很多人对你的产品感兴趣,并给出各种意见.
    4. 原来你也可以说,这个意见俺就是不接受.
    5. 原来创业公司可以这样起步,几个人,租个小两居.
    6. 原来团队开发可以如此高效.
    7. 原来想法可以如此的多,且大家的想法有如此多的交集.
    8. 原来别人也想到这个,并且比我们还先动手.
    9. 原来很多想法都如此的浅薄,禁不起推敲.
    10. 原来我们做的东西也可以Top 1.
    11. 原来有如此多的创业团队,会有Bump,Path,Flipboard这么精致的产品.
    12. 原来社区产品的运营很重要,用户个性的多样化,完全不按你规定的路线出牌
    13. 原来我必须对多样化的用户需求进行筛选,排级,剔除.叫的最响的不一定是最有用的需求
    14. 原来用户需要引导,用户也有反击.
    B. 自我约束
    这点收获也很大,创业公司,不规定你什么时候上下班,不规定你什么时候出活,没人明确的指定你要做成什么样.但大家都在一起工作,每天工作内容,质量,数量.大家都一清二楚.你需要:
    1. 自己去定开发计划,清楚自己在做什么.
    2. 自己去保证开发效率,当你在做自己的产品的时候,这种动力是油然而生的.
    3. 自己保证开发质量,作为小牛代码质量这个是基本功;UI/UE 也得努力学,不落后.
    C. 学会规划
    规划时间,规划产品,规划职业.学会一种方法.XY法.X轴代表你学习的广度,Y轴代表你学习的深度.
    比如想成为Android开发高手:
    X轴可以有:基础组件的使用,framework架构,设计模式,UI/UE
    Y轴可以有:基础组件能够自定义,framework的源码深入阅读,设计模式的熟练使用,UI/UE的领悟.

    这样你就可以很容易看出自己的方向,可以偏产品一点,那么UI/UE到什么程度,偏技术一些framework的源码阅读到什么程度.

    D. 这是一个团队
    学会协同工作,使用一些工具,google Doc,Trac,git等;定期做技术交流;定期做水果分享.达到知识共享.共同进步.
    3月12日 · 2 条评论      

    夏锎Zentertain创始人,iOS/Mac开发者

    14 票,来自 郭远远李继刚pillar 更多
    iOS开发者一枚。

    1 App Store是全年不休的奥运会,每天和全球竞争,能形成全球视野。
    2 持续关注Top Paid、Top Free榜,得到的信息量巨大。Top Grossing这个App Store上绝无仅有的榜单更是让开发者每天都能从盈利的角度锻炼自己的产品眼光。
    3 在App Store公平透明的机制下,见证了许多无名小卒的产品大红大紫。这让我更相信产品自身的力量。
    4 无数的案例让我相信,做对事情远比把事情做好重要。
    3月12日 · 5 条评论      

    潘思霁初学者的初学者,奔跑中的90后。(要上…

    13 票,来自 李菲菲夏潮凌周潜 更多
    一个菜鸟的成长
    断断续续学了半年的android开发,最多算个初学者beta1.0,所以只能分享一些代码之外的成长和认知。
    【大学的课程已经无法满足社会需求】
    学习android开发,让我对“编程”这两个字有了更新的认识。让我明白了“编程”不仅仅是“冒泡法排序”和测试卷上的几道编程例题。不过还是要感谢带我入门的C语言老师。
    【更加抓紧时间学习】
    “断断续续”学,是因为那个时候课余时间真不多。就是在这种状态下,学会了如何挤压时间来学习开发。那个学期也是我吃盒饭吃得最多的一个学期。都说大学“轻松”,但是真正想要学点东西,时间还真的不够用,要抓紧。
    【端正态度】
    很多人对我说过:呐,你在学android啊!怎么不去学iphone开发?appstore才能赚钱,做android没前途的。关于android前途的讨论,我已经见过无数了。而我认为与其讨论那前途,还不如把时间用在学习上,学好了自然有出路。
    【挫败感和成就感】
    “不死小强”和“不死bug”永远是编程路上无法避免的,有时候真得能把一个初学者打趴下,让你心灰意冷。但是决定“吃这碗饭”,你的内心是决不能“死”。当经历“九九八十一难”之后,第一个app终于“出生”了,当时的喜悦和成就感是无法形容的。
    【学会Google】
    在开发中遇到了问题,那么最好的老师就是Google了。从使用Google到巧用Google,掌握了关键字的把握、搜索技巧,并开始英文搜索,培养阅读能力。
    【打工和实习】
    开发设备还是要花钱买的,对于学生党来说就只能靠打工赚钱了。开始做做小工,比如装修拉电线什么的。最后加上一些奖学金,买了第一台android机。这学期初开始准备找实习,于是学着写简历投简历,陆续投了几家,都被pass掉了。这些也都算是经历了吧。(最近一个蘑菇街,说是让我等电话面试,估计是pass掉了)
    【发现更大的世界】
    接触android开发,我发现我关注一个app的UI和交互已经超越了代码。于是近期我又开始学习交互设计这方面的知识,提升自己的app的体验。自己也感到奇怪为什么的“更大的世界”不是“代码的深入”而是“交互设计”,只能说“更大的世界”是未知的。而下个“更大的世界”同样未知,等待我去发现。

    学习就是个成长的过程,写不了太专业的,就写点切身感受。
    3月12日 · 5 条评论      

    黄程做过android小游戏

    10 票,来自 天昂Zizon徐恩平 更多
    。拒绝闭门造车,多关注行业发展,尤其是通用的方法,工具,框架,流程等的发展。
    。其实Android像极了当年的J2ME,各厂商的定制和扩展,各种终端的差异性,很大程度上反而阻碍了它的发展。一次iOS到Android的移植工作深刻感受到了这点。但又不能忽视和放弃这块。持续关注,有限投入。
    。开发过程中,实际业务逻辑(比如游戏的实际逻辑)只占开发内容的20%,更多精力花在了底层的搭建,各种终端特异性的统一,各种辅助工具和方法的建立等。
    。合理利用现成的框架和引擎,尽量不要重复发明轮子。
    3月12日 · 添加评论      

    沈晓春iOS app developer

    9 票,来自 大强齐小七Zizon 更多
    独立开发者,资源有限,所以很多想法是从有限的资源开始考虑问题
    •  专注于一个方面,做好了再想其他
    • 吃自己的狗粮,做自己要用的App,猜用户想要什么,大部分时候,用户表达的可能是错误的
    • 做小范围内用户必须要用的,而不是大众可能会用的应用,比如,围棋相关应用,这是个小范围的应用,爱围棋的用户可能会用。做大众应用,可能无法竞争过那些巨头,如果他们进入。小范围的,巨头可能不屑于进入
    • 尊重版权,可以借鉴别人的产品,但不能侵害别人的版权,包括音乐、图像等
    • 简单有效的赢利模式,比如做收费应用0.99$
    • 保持初心,有时做应用做得觉得累了,烦了,想想,当初为何要做应用,其实就是爱好,自己用手机应用解决自己的问题
    3月13日 · 2 条评论      

    黄利庆曾经从事Linux/Android嵌入式系统研究…

    7 票,来自 YANG杨扬胡维 更多
    受OurDearAmy邀请回答 :) 我在前公司从事的是Android系统级开发,写应用的话,几个小工具,还有一个不幸半路夭折的电子市场。

    1. 视野大大开阔了。简单的举个例子,RIL(Radio Layer Interface)的设计。摸过几个平台:MTK,展信,威盛via,broncho,对手机软件RIL设计也有一些经验,但都是传统的。第一次看了Android的RIL 代码,设计之巧妙,代码短小精悍,令人叹服,你要知道,Broncho MMI ril层共15万行C++代码。RIL C层与应用层用socket通讯,传统的就是一个传个指针进来,强制转化为结构体。mock-ril是个牛X的东西,用了google的protobuf,还有nodejs。没看错,是js。多年前,我就想到用动态脚本测试手机模组AT mmi,可惜只写些简单的ruby的测试用例。看了mock-ril,hold 不住了。Android在很多设计上借鉴web开发的思想。

    2. 感到离自主创业越来越近。09年公司一些员工出去单干,写app去了。那时公司放弃自主开发的Broncho平台,转投入android。除了出方案,公司可以投入精力做工具类软件,ROM,电子市场(其实,就我一个人写)等等。现在想想,一个方向做好了,也会有不错的成就。但是公司的DNA决定了它很难转型。如谁谁谁说的:“带着70后做系统集成;带着80后做互联网;正带着90后做APP!”  app是个趋势。

    3. 成长? 用到啥学啥,技术都在变化。写写blog,与朋友们分享,也因此认识很多同行优秀的开发者。
    3月13日 · 添加评论      

    刘永宽攻城狮

    6 票,来自 周源徐恩平耿健桓 更多
    做ios开发一年多,算不上经验丰富 但是收获还是有的
    1. 知道了用户体验的重要性,真正站到了用户角度去做产品
    2. 追求完美,固然没有完美的产品,但是完美是开发者的追求,有时候会为一个像素点的错位去不断的调试
    3. 第一次知道原来bug可以带来如此大的灾难,在前东家做过一个公司产品的通用模块,曾因为没有捕获异常而导致公司全线产品挂掉(千万级用户),虽然避免不了bug的出现,再小心不足为过
    4. 虽然ios市场门槛越来越高了,但是用心做产品会得到用户认可的
    5. 结交了圈内很多朋友
    6. 查文档,看英文的能力被提高了
    3月12日 · 添加评论      

    halzhangandroid&ios developer,两年Andro…

    4 票,来自 李一民黄志川OurDearAmy 更多
    1,爱玩了
    手机里面的app上百个,每个都会玩一下,看看别人怎么做的,怎么设计的;
    2,对产品有了入门级的认识
    玩多了,对产品方面有了一下初步的认识。以后说不定会转向产品人员,不过现在主要还是想多写写代码;
    3,人脉广了
    认识很多圈内外的人,不一定都是从事开发工作的。
    4,技术涉猎更加广泛
    除了android,也开始做一些ios开发,wp7也有了解。
    了解一下各个平台的差异化。好在哪里,不好在哪里,各个平台互相借鉴。体验一下各个平台的交互设计。
    5,github,stack overflow经常上了
    其实就是如何自己去解决那些开发过程中问到的一些问题。
    学会在github找现有的解决方案,学会到stack overflow寻找问题的答案;
    3月12日 · 1 条评论      

    yava半瓶水

    4 票,来自 刘永巧陈然李楠 更多
    Android开发一年多,除了技术涨了点,薪水涨了点,剩下的只有这点个人感悟了:
    1. 个人能力有限,只有和一些志同道合的兄弟们在一起,才能做一些有影响力有意义的事情。 
    2. 某些情况下激情比技术更重要,不去“拼”,凭做出来的东西要比别人的出色。
    3. 任务分配得当,小弟会做得比你还出色,善于用人也是一个技术活
    4. 善于沟通,往往会事半功倍,沟通也是一个技术活:)
    5. 开发的产品被成千上万的人使用很兴奋。
    昨天 22:16 · 1 条评论      

    蓝文Python/Android/Ruby

    3 票,来自 天昂朱磊周源
    Android 开发3年多,最好的软件在android market上超过200w下载,虽然是朋友的创意,但是也是值得高兴的事情.

    最近3年一直在做Android前端和服务器后端的开发,并且也同时涉及技术和团队管理,有一定提升。今年换了工作,会主要关注移动互联网应用市场的数据挖掘和分析,希望能够从更大更广的视野来看这个市场。




    展开全文
  • 前提 ... ...时间待会咱算算,可先粗略照一个月。 ...这篇文章讲的很详细 《iOS公司开发者账号的申请(2018年最新/最详细)》 ,具体流程我就不记录了可照这篇...申请DUNS邓氏编码,需要英文的公司名称、地址等,填写完...
    前提
    1. 之前申请过个人的开发者账号,一天填写资料,一天等邮件,基本3天内就用上了。
    2. 这次公司申请公司账号,流程有所不同,申请时间大幅增加,给公司要你去负责申请公司开发账号的小伙伴提个醒,评估时间先粗略照一个月,准确时间下文仔细计算。
    参考
    1. 这篇文章讲的很详细 《iOS公司开发者账号的申请(2018年最新/最详细)》 ,具体流程我就不记录了,我是照这篇文章弄的。
    注意事项

    一、申请DUNS邓氏编码(申请过的查询一下就好了)

    1.需要英文的公司名称、地址等,填写完后等邮件。
    2.一两天能收到一个邓白氏回的确认邮件《D-U-N-S Number Requert/Update Confirmation》
    在这里插入图片描述
    3.三五天,你会收到邓白氏申请专员的回复邮件,让你提供完整的公司信息
    在这里插入图片描述
    这里营业执照照片、公章实物照片比较麻烦,需要走OA流程的可能光申请流程就得一周了,还要当天就回复这个邮件,所以得提前准备这些东西。
    4.第二天收到邓白氏码。14个工作日后才能使用。

    二、申请一个apple账号,需要邮箱(可公司邮箱)、ios设备(手机、mac用来登录apple账号,接受六位验证码)、未绑定过apple账号的手机号
    半天

    三、注册开发者账号申请通过后,等待几天还未知

    总结:

    一两天+三五天+一周+第二天+半天+14个工作日=一个月多

    展开全文
  • 最近有个项目上线时间很赶。所以研究了苹果的审核时间。 苹果总部的上班时间是8:00-17:00。苹果总部库比提诺是西八区,北京是东八区,比北京晚16小时,夏令时相差15小时。美国从每年3月的第二个星期日至11月的第一个...

    最近有个项目上线时间很赶。所以研究了苹果的审核时间。

    苹果总部的上班时间是8:00-17:00。苹果总部库比提诺是西八区,北京是东八区,比北京晚16小时,夏令时相差15小时。
    美国从每年3月的第二个星期日至11月的第一个星期日采用夏令时,夏令时比正常时间早一小时。

    所以开始审核的时间是北京时间夏令时:23:00-8:00,冬令时:0:00-9:00

    链接:https://www.jianshu.com/p/67d00786dae1

    转载于:https://blog.51cto.com/xuqin/2384286

    展开全文
  • 关于app产品价格问题以及开发时间是app开发公司经常被问到的,前者我们已经做了详细解答,app开发需要多长时间,也需要综合来衡量,下面微唯宝给大家详细解答一下。  1.app开发系统  App开发主流系统包括ios系统和...

    关于app产品价格问题以及开发时间是app开发公司经常被问到的,前者我们已经做了详细解答,app开发需要多长时间,也需要综合来衡量,下面微唯宝给大家详细解答一下。
      1.app开发系统
      App开发主流系统包括ios系统和android系统,由于ios系统的移动设备只有三种iPad、iphone、iPad mini,苹果公司为ios系统的软件开发者搭建了较好的平台,开发出来的软件有很好的兼容性;Android系统开发难度大,不同版本的系统都有自己独特的上层封包,对所有种类的安卓系统兼容,就有非常庞大的终端设备需要进行测试,耗费的时间远远大于ios系统。当出现一些bug的时候,ios可以很快就修复完成,android系统则需要更多的时间。
      2.开发app功能
      在开发APP功能上的设计、开发复杂度以及质量方面也是影响开发周期的因素之一。
      App开发设计复杂度、质量等直接影响开发周期。一般的app设计包括前端设计、用户界面设计、后端整合、管理等,开发周期长。
      就功能方面来说,商城app和办公app需要实现的功能不一样,办公app只为提升办公效率,用于企业内部人员管理,功能简单,设计周期较短;商城类app除了要实现最基本的功能外,还得提升营销效果,就得设计出例如购物车、支付功能,架构较为复杂,工作量也会相应增加。
      在这里插入图片描述
      3.客户所属行业类型
      无论是客户咨询价格或者是时间,我们的产品经理都会问及客户所从事的行业以及目标客户类型。微唯宝服务客户行业众多,包括餐饮、汽车、医疗、旅游、百货、摄影、政务、商业等,同样功能不同行业的app,开发周期也是不同的。
      4.开发公司实力
      很多客户在比较多家公司情况下会选择微唯宝,主要看中公司实力,微唯宝专业技术人员50多个,有着互联网开发行业的丰富经验,在获取客户详细需求后,凭借高执行力能在约定时间内保质交付产品。

    展开全文
  • 1.用户按Home之后,App转入后台进行运行,此时拥有180s后台时间iOS7)或者600s(iOS6)运行时间可以处理后台操作 2.当180S或者600S时间过去之后,可以告知系统未完成任务,需要申请继续完成,系

    iOS为了让设备尽量省电,减少不必要的开销,保持系统流畅,因而对后台机制采用墓碑式的“假后台”。除了系统官方极少数程序可以真后台,一般开发者开发出来的应用程序后台受到以下限制:
    1.用户按Home之后,App转入后台进行运行,此时拥有180s后台时间(iOS7)或者600s(iOS6)运行时间可以处理后台操作
    2.当180S或者600S时间过去之后,可以告知系统未完成任务,需要申请继续完成,系统批准申请之后,可以继续运行,但总时间不会超过10分钟。
    3.当10分钟时间到之后,无论怎么向系统申请继续后台,系统会强制挂起App,挂起所有后台操作、线程,直到用户再次点击App之后才会继续运行。

    当然iOS为了特殊应用也保留了一些可以实现“真后台”的方法,摘取比较常用的:
    1.VOIP
    2.定位服务
    3.后台下载
    4.在后台一直播放无声音乐(容易受到电话或者其他程序影响,所以暂未考虑)
    5….更多
    其中VOIP需要绑定一个Socket链接并申明给系统,系统将会在后台接管这个连接,一旦远端数据过来,你的App将会被唤醒10s(或者更少)的时间来处理数据,超过时间或者处理完毕,程序继续休眠。
    后台现在是iOS7引入的新API,网上实现的代码比较少,博主也没有细心去找。
    由于博主要做的App需要在后台一直运行,每隔一段时间给服务器主动发送消息来保持帐号登陆状态,因而必须确保App不被系统墓碑限制。
    博主最先尝试了很多方法,包括朋友发来的一个Demo,每180s后台时间过期就销毁自己然后再创建一个后台任务,但是实际测试只有10分钟时间。最后因为考虑到VOIP对服务端改动太大,时间又太紧,所以选择了定位服务的方法来保持后台。

    要启动定位服务:
    1.需要引入头文件:#import <CoreLocation/CoreLocation.h>
    2.在AppDelegate.m中定义CLLocationManager * locationManager;作为全局变量方便控制
    3.在程序启动初期对定位服务进行初始化:

    1
    2
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;//or whatever class you have for managing location</pre>

    4.在程序转入后台的时候,启动定位服务
    [locationManager startUpdatingLocation];(第一次运行这个方法的时候,如果之前用户没有使用过App,则会弹出是否允许位置服务,关于用户是否允许,后面代码中有判断)
    这样在定位服务可用的时候,程序会不断刷新后台时间,实际测试,发现后台180s时间不断被刷新,达到长久后台的目的。

    但是这样使用也有一些问题,在部分机器上面,定位服务即使打开也可能不能刷新后台时间,需要完全结束程序再运行。稳定性不知道是因为代码原因还是系统某些机制原因。

    下面贴上代码:
    注意:代码中包含朋友给的demo中,180s时间后销毁自己再创建自己的后台方法,我自己实现过程中加入了定位服务来确保后台能够一直在线。
    源码参考部分来自网上,因为翻了Google,找了很多英文方面的博文,在此感谢原作者分享。

    判断用户是否打开了定位服务,是否禁用了该程序的定位权限:

    if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))//判断定位服务是否打开
        {
            [InterfaceFuncation ShowAlertWithMessage:@"错误" AlertMessage:@"定位服务未打开\n保持在线需要后台定位服务\n请到 设置-隐私 中打开定位服务" ButtonTitle:@"我错了"];
            return;
        }

    AppDelegate.m源码:

    @property (assign, nonatomic) UIBackgroundTaskIdentifier bgTask;
     
    @property (strong, nonatomic) dispatch_block_t expirationHandler;
    @property (assign, nonatomic) BOOL jobExpired;
    @property (assign, nonatomic) BOOL background;
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
     
     UIApplication* app = [UIApplication sharedApplication];
     
     __weak NSUAAAIOSAppDelegate* selfRef = self;
     
     self.expirationHandler = ^{  //创建后台自唤醒,当180s时间结束的时候系统会调用这里面的方法
     [app endBackgroundTask:selfRef.bgTask];
     selfRef.bgTask = UIBackgroundTaskInvalid;
     selfRef.bgTask = [app beginBackgroundTaskWithExpirationHandler:selfRef.expirationHandler];
     NSLog(@"Expired");
     selfRef.jobExpired = YES;
     while(selfRef.jobExpired)
     {
     // spin while we wait for the task to actually end.
     NSLog(@"等待180s循环进程的结束");
     [NSThread sleepForTimeInterval:1];
     }
     // Restart the background task so we can run forever.
     [selfRef startBackgroundTask];
     };
     
     // Assume that we're in background at first since we get no notification from device that we're in background when
     // app launches immediately into background (i.e. when powering on the device or when the app is killed and restarted)
     [self monitorBatteryStateInBackground];
     locationManager = [[CLLocationManager alloc] init];
     locationManager.delegate = self;
     //[locationManager startUpdatingLocation];
     return YES;
    }
     
    - (void)monitorBatteryStateInBackground
    {
     self.background = YES;
     [self startBackgroundTask];
    }
     
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
     NSLog(@"App is active");
     [UIApplication sharedApplication].applicationIconBadgeNumber=0;//取消应用程序通知脚标
     [locationManager stopUpdatingLocation];
     self.background = NO;
    }
     
    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
     // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
     // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
     //if([self bgTask])
     if(isLogined)//当登陆状态才启动后台操作
     {
     self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:self.expirationHandler];
     NSLog(@"Entered background");
     [self monitorBatteryStateInBackground];
     }
    }
     
    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error//当定位服务不可用出错时,系统会自动调用该函数
    {
     NSLog(@"定位服务出错");
     if([error code]==kCLErrorDenied)//通过error的code来判断错误类型
     {
     //Access denied by user
     NSLog(@"定位服务未打开");
     [InterfaceFuncation ShowAlertWithMessage:@"错误" AlertMessage:@"未开启定位服务\n客户端保持后台功能需要调用系统的位置服务\n请到设置中打开位置服务" ButtonTitle:@"好"];
     }
    }
     
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations//当用户位置改变时,系统会自动调用,这里必须写一点儿代码,否则后台时间刷新不管用
    {
     NSLog(@"位置改变,必须做点儿事情才能刷新后台时间");
     CLLocation *loc = [locations lastObject];
     //NSTimeInterval backgroundTimeRemaining = [[UIApplication sharedApplication] backgroundTimeRemaining];
     //NSLog(@"Background Time Remaining = %.02f Seconds",backgroundTimeRemaining);
     // Lat/Lon
     float latitudeMe = loc.coordinate.latitude;
     float longitudeMe = loc.coordinate.longitude;
    }
     
    - (void)startBackgroundTask
    {
     NSLog(@"Restarting task");
     if(isLogined)//当登陆状态才进入后台循环
     {
     // Start the long-running task.
        NSLog(@"登录状态后台进程开启");
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
     // When the job expires it still keeps running since we never exited it. Thus have the expiration handler
     // set a flag that the job expired and use that to exit the while loop and end the task.
        NSInteger count=0;
        BOOL NoticeNoBackground=false;//只通知一次标志位
        BOOL FlushBackgroundTime=false;//只通知一次标志位
        locationManager.distanceFilter = kCLDistanceFilterNone;//任何运动均接受,任何运动将会触发定位更新
        locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;//定位精度
        while(self.background && !self.jobExpired)
        {
           NSLog(@"进入后台进程循环");
           [NSThread sleepForTimeInterval:1];
           count++;
           if(count>60)//每60s进行一次开启定位,刷新后台时间
           {
              count=0;
              [locationManager startUpdatingLocation];
              NSLog(@"开始位置服务");
              [NSThread sleepForTimeInterval:1];
              [locationManager stopUpdatingLocation];
              NSLog(@"停止位置服务");
              FlushBackgroundTime=false;
           }
           if(!isLogined)//未登录或者掉线状态下关闭后台
           {
              NSLog(@"保持在线进程失效,退出后台进程");
              [InterfaceFuncation ShowLocalNotification:@"保持在线失效,登录已被注销,请重新登录"];
              [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
              return;//退出循环
           }
           NSTimeInterval backgroundTimeRemaining = [[UIApplication sharedApplication] backgroundTimeRemaining];
           NSLog(@"Background Time Remaining = %.02f Seconds",backgroundTimeRemaining);
           if(backgroundTimeRemaining<30&&NoticeNoBackground==false)
           {
              [InterfaceFuncation ShowLocalNotification:@"向系统申请长时间保持后台失败,请结束客户端重新登录"];
              NoticeNoBackground=true;
        }
        //测试后台时间刷新
           if(backgroundTimeRemaining>200&&FlushBackgroundTime==false)
           {
              [[NSNotificationCenter defaultCenter] postNotificationName:@"MessageUpdate" object:@"刷新后台时间成功\n"];
              FlushBackgroundTime=true;
              //[InterfaceFuncation ShowLocalNotification:@"刷新后台时间成功"];
           }
        }
        self.jobExpired = NO;
        });
     }
    }
    


    0
    0

    展开全文
  • 1.用户按Home之后,App转入后台进行运行,此时拥有180s后台时间iOS7)或者600s(iOS6)运行时间可以处理后台操作 2.当180S或者600S时间过去之后,可以告知系统未完成任务,需要申请继续完成,系
  • iOS关于时间的处理

    2016-12-16 09:51:09
    转自:iOS关于时间的处理做App避免不了要和时间打交道,关于时间的处理,里面有不少门道,远不是一行API调用,获取当前系统时间这么简单。我们需要了解与时间相关的各种API之间的差别,再因场景而异去设计相应的机制...
  • 官方网站: ...一、iOS 应用程序5个状态 1、停止运行-应用程序已经终止,或者还未启动。 2、不活动-应用程...
  • 1.用户按Home之后,App转入后台进行运行,此时拥有180s后台时间iOS7)或者600s(iOS6)运行时间可以处理后台操作 2.当180S或者600S时间过去之后,可以告知系统未完成任务,需要申请继续完成,系
  •  使用iOS 设备安装APP后,通常都会询问是否允许,一般情况下用户都会收到某APP的push。比如,用户收到一条微博,他们喜欢的球队赢了比赛,或者他们的晚饭准备好了,既然APP不在运行,所以APP不能检查这些事件。  ...
  • IOS下计算日期时间间隔: //创建日期格式化对象 NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; //创建了两个日期对象 NSDate *...
  • 最后在做一个应用的时候,从电话本时读出数据,如果电话很,就需要比较时间,于是如果能得到每个方法的执行时间,就可以知道代码优化的地方。 在网上看到了一个比较好的方法来获取执行时间。看代码 #...
  • iOS进阶 - iOS如何监控崩溃 几种常见的崩溃 数组越界;给数组添加 nil; 线程问题: 在子线程更新UI, 不同线程操作同一个数据。 主线程无响应:主线程超过系统规定时间无响应就会被 Watchdog 杀掉。 野指针:指针...
  • 问题:想实现类似微信启动页一样 设置为一个整页面的图片 问题二:iOS启动页面如何设置停留一会 新建的iOS 项目启动画面默认为LaunchScreen.xib...是启动页停留一段时间需要在 AppDelegate - (BOOL)
  • ios 获取当前准确时间

    2018-10-10 11:12:38
    获取当前时间:(之前做倒计时时发现一些bug,这里对获取当前时间进行总结) 启动app时发送服务器时间请求获取当前最新时间,存储到内存; 退到后台或锁屏手机后再进入前台情况下最新时间: 这里处理的方案是将...
  • 前段时间做一个闹钟类型的产品,...我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态。 很早以前听说可以通过后台播放音乐来实现,借鉴了一下,测试好几天,找出来了一个还比较靠谱的方案:
  • iOS获取文件长度 iOS获取文件大小
  • 直接使用...需要添加AVFoundation框架, 并引入头文件#import AVURLAsset *urlAsset = [AVURLAsset URLAssetWithURL:url options:opts]; // 初始化视频媒体文件 int minute = 0, second = 0; s
  • 前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。 ...对于ios7,苹果支持几种后台运行模式,backgroundTask,...我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态
1 2 3 4 5 ... 20
收藏数 105,870
精华内容 42,348