====== Developer ====== ===== Doc & Book ===== * [[http://useyourloaf.com/blog/wwdc-2016-viewing-guide|WWDC 2016 Viewing Guide]] * [[https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/|Start Developing iOS Apps Today]] * [[https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html|Programming with Objective-C]] * [[https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/iPhoneOSTechOverview/Introduction/Introduction.html|iOS Technology Overview]] * [[https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreData_ObjC/_index.html|Core Data Framework Reference]] * [[https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/ObjC_classic/_index.html|Foundation Framework Reference]] * [[https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKit_Framework/_index.html|UIKit Framework Reference]] * [[https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVFoundationFramework/_index.html|AV Foundation Framework Reference]] * [[http://www.techotopia.com/index.php/IOS_7_App_Development_Essentials|iOS 7 App Development Essentials]] * [[http://www.techotopia.com/index.php/Objective-C_2.0_Essentials|Objective-C 2.0 Essentials]] * [[http://pragprog.com/titles/amiphd/iphone-sdk-development|iPhone SDK Development]] * [[http://shop.oreilly.com/product/0636920031031.do?sortby=publicationDate|iOS 7 Programming Cookbook]] ===== Objective-C ===== * [[http://www.slideshare.net/MassimoOliviero/modernize-your-objectivec|Modernize your Objective-C]] * [[https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html|Working with Blocks]] * objc.io - A periodical about best practices and advanced techniques for iOS and OS X development. * http://www.objc.io * http://objccn.io ==== Frameworks ==== * [[https://www.cocoacontrols.com/|Open source and commercial UI components for iOS and OS X]] * [[http://code4app.net/]] * [[http://code4app.com/]] * [[https://github.com/vsouza/awesome-ios|Awesome iOS]] - A curated list of awesome iOS frameworks, libraries, tutorials, xcode plugins and components. * [[https://github.com/ReactiveCocoa/ReactiveCocoa|ReactiveCocoa]] A framework for composing and transforming streams of values * [[https://github.com/BoltsFramework/Bolts-iOS|Bolts-iOS]] Bolts is a collection of low-level libraries designed to make developing mobile apps easier. * [[http://www.appcoda.com/intro-multipeer-connectivity-framework-ios-programming/|Understanding Multipeer Connectivity Framework in iOS 7]] * [[https://dotblogs.com.tw/clark/2015/11/13/153918|建立與使用Framework]] ==== Function ==== === Remote Notification === 如果要使用這種情況,必須要implement 以下的 method,如果需要長時間使用的話 App 很容易會被 Suspend,那就必須要使用 Background Mode(remote notifications) 來避免App被系統 Suspend From Apple: > This method will be invoked even if the application was launched or resumed because of the remote notification. The respective delegate methods will be invoked first. Note that this behavior is in contrast to application:didReceiveRemoteNotification:, which is not called in those cases, and which will not be invoked if this method is implemented. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler NS_AVAILABLE_IOS(7_0); 收到 Push 後,不論 App 是否有被開啟,在 iOS 7 都能有 10 秒鐘的存活時間,你能在這段時間內執行 MapKit 來取得定位資訊,再回傳給 Server。 application:didReceiveRemoteNotification:fetchCompletionHandler: > Use this method to process incoming remote notifications for your app. Unlike the application:didReceiveRemoteNotification: method, which is called only when your app is running in the foreground, the system calls this method when your app is running in the foreground or background. In addition, if you enabled the remote notifications background mode, the system launches your app (or wakes it from the suspended state) and puts it in the background state when a push notification arrives. However, the system does not automatically launch your app if the user has force-quit it. In that situation, the user must relaunch your app or restart the device before the system attempts to launch your app automatically again. > When a push notification arrives, the system displays the notification to the user and launches the app in the background (if needed) so that it can call this method. Launching your app in the background gives you time to process the notification and download any data associated with it, minimizing the amount of time that elapses between the arrival of the notification and displaying that data to the user. > As soon as you finish processing the notification, you must call the block in the handler parameter or your app will be terminated. Your app has up to 30 seconds of wall-clock time to process the notification and call the specified completion handler block. In practice, you should call the handler block as soon as you are done processing the notification. The system tracks the elapsed time, power usage, and data costs for your app's background downloads. Apps that use significant amounts of power when processing push notifications may not always be woken up early to process future notifications. 連結:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler * [[http://derjohng.doitwell.tw/6178/|iOS8 下 Push Notification 推播服務的改變]] * [[https://www.facebook.com/groups/iostw/permalink/906779296016087/]] * [[http://blog.toright.com/posts/2846|如何透過 PHP 發送 Apple Notification Push]] * [[http://stackoverflow.com/questions/15943671/how-get-feedback-from-apns-when-sending-push-notification]] * [[https://github.com/grocer/grocer]] * [[https://github.com/duccio/ApnsPHP]] === Audio === * [[https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/Introduction.html|Notifications Support Interruption Handling]] * [[https://developer.apple.com/library/ios/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingAudioInterruptions/HandlingAudioInterruptions.html|Responding to Interruptions]] * [[http://stackoverflow.com/questions/20736809/avplayer-handle-when-incoming-call-come|AVplayer handle when Incoming call come]] * [[http://stackoverflow.com/questions/20591156/is-there-a-public-way-to-force-mpnowplayinginfocenter-to-show-podcast-controls|Is there a public way to force MPNowPlayingInfoCenter to show podcast controls?]] === Multipeer Connectivity === * [[https://developer.apple.com/library/ios/documentation/MultipeerConnectivity/Reference/MultipeerConnectivityFramework/|Multipeer Connectivity Framework]] * [[http://nshipster.com/multipeer-connectivity/|Multipeer Connectivity Written by Mattt Thompson]] * [[https://www.objc.io/issues/18-games/multipeer-connectivity-for-games/|Multipeer Connectivity in Games]] ===== Swift ===== * [[http://swifteducation.github.io/|Swift Education]] * [[http://swifter.tips/]] * [[http://www.makeuseof.com/tag/best-places-learn-swift-apples-programming-language/|The Best Places to Learn Swift, Apple’s Programming Language]] * YouTube * Brian Advent - [[https://www.youtube.com/playlist?list=PLY1P2_piiWEY3W_aGo7r2OZmsk6Ww757Y|Swift]] * Rasim Muratovic - [[https://www.youtube.com/playlist?list=PLPedo-T7QiNtVD73fXrBT8KvngU3OiNo2|Swift Programming Tutorial]] * [[http://www.appcoda.com.tw/json-data-taipei-tutorial|Swift JSON教學:如何利用 Data Taipei 公開資料庫建立 App]] * [[http://samvlu.com/|100 Days of Swift]] ===== UI ===== * [[https://developer.apple.com/ios/human-interface-guidelines/resources/|Apple UI Design Resources]] The Apple UI Design Resources include Photoshop and Sketch templates, and other UI materials for quickly designing iOS apps. * [[https://www.cocoacontrols.com/|Cocoa Controls]] open source and commercial UI components for iOS and OS X * [[https://github.com/rs/SDWebImage|SDWebImage]] Asynchronous image downloader with cache support with an UIImageView * [[http://hackemist.com/SDWebImage/doc/|SDWebImage Reference]] * [[https://github.com/John-Lluch/SWRevealViewController|SWRevealViewController]] side view controllers * [[https://github.com/enormego/EGOTableViewPullRefresh|EGOTableViewPullRefresh]] A similar control to the pull down to refresh control created by atebits in Tweetie 2 * [[https://github.com/AlexBarinov/UIBubbleTableView|UIBubbleTableView]] Cocoa UI component for chat bubbles with avatars and images support * [[https://github.com/ppanopticon/PTSMessagingCell/|PTSMessagingCell]] provides the basic functionalities of a messaging cell as used in the iOS Messaging App or WhatsApp * [[https://github.com/norsez/BDDynamicGridViewController|BDDynamicGridViewController]] Data-aware view-controller that displays a UIView list in an automatically laid out grid * [[https://github.com/ShadyElyaski/ios-filter-control|ios-filter-control]] An iOS Filter UIControl Subclass. Zero Graphics. Highly Customizable * [[https://github.com/chrismiles/CMPopTipView|CMPopTipView]] Custom UIView for iOS that pops up an animated "bubble" pointing at a button or other view. Useful for popup tips * [[http://www.appcoda.com/introduction-auto-layout/|Introduction to Auto Layout]] * [[http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout|Dynamic Table View Cell Height and Auto Layout]] * [[http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1|Beginning Auto Layout Tutorial in iOS 7: Part 1]] * [[http://www.raywenderlich.com/90488/calayer-in-ios-with-swift-10-examples|CALayer Tutorial with Swift]] ==== Reference ==== * [[http://blog.csdn.net/ryantang03/article/category/1073221|Ryan's zone]] * [[http://ui4app.com/]] * [[http://www.fondcool.com/share.html]] * [[http://beta.uihaus.com|A showcase of the best mobile app designs ever made]] ===== UX ===== * [[http://userflowpatterns.com|User Flow Patterns]] * [[http://uigifs.com/|uiGIFs]] ===== Design ===== * [[https://developer.apple.com/library/ios/design/index.html|iOS 7 Design Resources]] * [[http://taybenlor.com/2013/05/21/designing-for-ios.html|Starter's Guide to iOS Design]] * [[http://iosdesign.ivomynttinen.com/|The iOS Design Guidelines]] * [[http://www.teehanlax.com/tools/|iOS7 GUI PSD]] * [[http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/|The iOS Design Cheat Sheet]] * [[http://www.cocoachina.com/newbie/basic/2013/0703/6525.html|iOS 7用户界面过渡指南(上):过渡前的准备工作]] * [[https://github.com/rafaelconde/ios8-ui-kit|ios8-ui-kit]] - And extended and updated to iOS 8 UI Kit for Sketch ==== Icon ==== * [[http://www.pixeden.com/media-icons/tab-bar-icons-ios-7|Tab Bar Icons iOS 7 ]] * [[http://www.pixeden.com/media-icons/tab-bar-icons-ios-7-vol2|Tab Bar Icons iOS 7 Vol2 ]] ===== Xcode ===== * [[https://www.bignerdranch.com/blog/xcode-breakpoint-wizardry/|Xcode Breakpoint Wizardry]] ==== Xcode 6 Live Rendering ==== * [[http://www.macstories.net/mac/xcode-6-live-rendering-visual-view-debugging-and-swift/|Xcode 6: Live Rendering, Visual View Debugging, and Swift]] * [[https://github.com/mbogh/xcode-live-rendering|Xcode 6 Live Rendering sample]] ==== Build Tool ==== === CocoaPods === http://cocoapods.org CocoaPods is the dependency manager for Objective-C projects. It has thousands of libraries and can help you scale your projects elegantly. === Carthage === https://github.com/Carthage/Carthage A simple, decentralized dependency manager for Cocoa. * [[http://www.isaced.com/post-265.html|Cocoa 新的套件管理工具:Carthage]] ==== Simulator ==== === Scale === 預設只有 100%、75%、50% 三種解析度,但是 iPhone 6 Plus 的解析度高 2208 像素,雖然可以縮小成 50%,1104 像素仍然放不進去 1080 高的螢幕,導致無法一次看完整個畫面。 defaults write ~/Library/Preferences/com.apple.iphonesimulator SimulatorWindowLastScale "0.45" 可以將比例改成自訂的數值,但如果有改回原本預設的三種解析度,就要自己再重新設定。 ==== Plug-ins ==== Copy to "~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/" * [[https://github.com/kattrali/cocoapods-xcode-plugin|cocoapods-xcode-plugin]] Dependency management helper for your CocoaPods, right in Xcode * [[https://github.com/questbeat/Lin-Xcode5|Lin-Xcode5]] A Localization Manager for Xcode 5 * [[https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin|FuzzyAutocompletePlugin]] A Xcode 5+ plugin that adds more flexible autocompletion rather than just prefix-matching * [[https://github.com/omz/ColorSense-for-Xcode|ColorSense for Xcode]] Plugin for Xcode to make working with colors more visual ==== Translation ==== * [[https://medium.com/ios-apprentice/working-with-localization-905e4052b9de|Working with Localization]] * AppleLanguages (zh-Hant) * AppleLanguages (ja) ===== Testing ===== * [[https://kkboxsqa.wordpress.com/2015/12/15/ios-ui-monkey-test/|iOS UI monkey test]] * [[https://discuss.appium.io/t/ios9-uiautomation-what-is-appium-approach-to-uiautomation-deprecation-by-apple/7319|[iOS9 UIAutomation] What is Appium approach to UIAutomation deprecation by Apple]] * [[https://kkboxsqa.wordpress.com/2015/11/09/%E4%BD%BF%E7%94%A8-xcode-%E5%9F%B7%E8%A1%8C-ui-%E8%87%AA%E5%8B%95%E5%8C%96%E6%B8%AC%E8%A9%A6/|使用 Xcode 執行 UI 自動化測試]] ===== Reference Projects ===== * [[https://github.com/chiahsien/Curator-iOS|小海嚴選正妹]] * [[https://github.com/sprang/Inkpad|Inkpad]] Vector illustration app for the iPad * [[https://github.com/shu223/iOS8-Sampler|iOS8-Sampler]] ===== Misc ===== * [[http://zonble.net/archives/2014_01/1540.php|你為什麼不該在你的 iOS 軟體專案中使用 Storyboard]] * [[http://julianshen.blogspot.tw/2012/12/ios-smart-app-bannersnative-app.html|利用Smart App Banners在網頁上推廣Native App ]] * [[http://www.raywenderlich.com/63283/top-10-ios-conferences-2014|Top 10 iOS Conferences in 2014]] * [[http://app-island.com/app/2560/4325|製作xcode憑證,讓開發的APP可以安裝到iOS裝置做測試]] * [[http://benscheirman.com/2013/08/the-ios-developers-toolbelt/|75 Essential Tools for iOS Developers]] [[http://www.tuicool.com/articles/FBnyEj|iOS 开发者必知的 75 个工具]] * [[http://www.cocoachina.com/special/ios8/|iOS 8 開發者手冊]] * [[http://www.raywenderlich.com/87300/apple-pay-tutorial|Apple Pay Tutorial]] * [[http://wiki.akosma.com/IPhone_URL_Schemes|iPhone URL Schemes]] * [[http://www.thomashanning.com/how-to-stay-up-to-date-on-ios-development/|How To Stay Up-To-Date On iOS Development]] * [[https://medium.com/app-coder-io/27-ios-open-source-libraries-to-skyrocket-your-development-301b67d3124c|27 iOS open source libraries to skyrocket your development]] ==== Analysis / Crash ==== * [[http://try.crashlytics.com/|Crashlytics]] * [[https://launchkit.io/|LaunchKit]] - a suite of tools that makes it easier to build, launch, and manage mobile apps. ==== Network Debugging ==== rvictl -s 搭配 tcpdump 或 WireShark 側錄封包。 * [[http://mrpeak.cn/blog/tutorial-tcpdump/|iOS,Android網絡抓包教程之tcpdump]] * [[http://albert-oma.blogspot.tw/2013/09/ios-packet-tracing.html|iOS -- Packet Tracing]] ==== Blog/Forum ==== * http://furnacedigital.blogspot.tw * http://nelson.logdown.com/archives * http://blog.changyy.org/search/label/iOS * http://www.takobear.tw/12/category/bear-ioseafa354002/1.html * http://popcornylu.blogspot.tw/search/label/iOS ==== iOS 8 ==== * [[http://derjohng.doitwell.tw/6197/|iOS8 下定位 (CLLocationManager) 的改變]] * [[http://www.captechconsulting.com/blogs/ios-8-tutorial-series-auto-sizing-table-cells|iOS 8 Tutorial Series: Auto Sizing Table Cells]] ==== iOS 9 ==== * [[http://www.infoq.com/cn/articles/wechat-ios9-adaptation|微信iOS 9适配总结]] * [[http://isux.tencent.com/ios9-guideline-ch1.html|iOS 9人機界面指南(一):UI設計基礎]] * [[http://www.appcoda.com.tw/core-spotlight-framework/|利用 Core Spotlight 框架增加 iOS Apps 的曝光率]] * [[https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9|How to Set Up Universal Links to Deep Link on Apple iOS 9]] * [[https://blog.branch.io/ios-9.2-deep-linking-guide-transitioning-to-universal-links|iOS 9.2 Deep Linking Guide: Transitioning to Universal Links]] * [[http://www.inside.com.tw/2016/01/29/ios-9-2-update-the-fall-of-uri-schemes-and-the-rise-of-universal-links|iOS 9.2 更新:URI Schemes 的衰退及 Universal Links 的崛起]] ====== iTouchTW ====== http://app.itouchtw.com/ 介紹iPod Touch和iPhone上所有的軟體,其中包括AppStore、Cydia、Installer。 ====== iPhone tw ====== http://www.iphonetw.net/ ====== Stanford on iTunes U ====== * [[https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550|Developing iOS 7 Apps for iPhone and iPad]] * http://www.iphonetw.net/Stanford_iPhone_Class_CS193P