{"id":1012,"date":"2015-01-29T10:00:00","date_gmt":"2015-01-29T18:00:00","guid":{"rendered":"http:\/\/blog.thinkapps.com\/?p=1012"},"modified":"2015-03-31T09:58:56","modified_gmt":"2015-03-31T17:58:56","slug":"how-to-develop-apple-watch-apps","status":"publish","type":"post","link":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/","title":{"rendered":"How to Develop Apple Watch Apps"},"content":{"rendered":"<p class=\"p1\">Wondering how to develop apps for the Apple Watch?<\/p>\n<p class=\"p1\">If you&#8217;re interested in having someone <a title=\"Build an Apple Watch App\" href=\"http:\/\/thinkapps.com\/apple-watch\/?Campaign_ID=701F0000000SQ0Y&amp;lead_source=Blog\" target=\"_blank\">build an Apple Watch app for you, click here<\/a>. If you&#8217;re interested in learning how to build one yourself, keep reading.<\/p>\n<p class=\"p1\">In this article, we will help you create your first\u00a0<a title=\"Apple Watch\" href=\"https:\/\/www.apple.com\/watch\/\" target=\"_blank\">Apple Watch<\/a> app through the\u00a0<a title=\"Apple Watch WatchKit SDK\" href=\"https:\/\/developer.apple.com\/watchkit\/\" target=\"_blank\">WatchKit SDK<\/a>. We will assume that you come primarily from a design background and are a beginner as far as app development goes.\u00a0But fear not, we will make this tutorial as simple as possible and explain each step, as we guide you through the process from start-to-finish.<\/p>\n<p class=\"p1\">(For more on <a title=\"Apple Watch on ThinkApps\" href=\"http:\/\/thinkapps.com\/blog\/tag\/apple-watch\/\" target=\"_blank\">Apple Watch design and development<\/a>, check out these <a title=\"5 Important Design Principles for Apple Watch Apps\" href=\"http:\/\/thinkapps.com\/blog\/design\/apple-watch-apps-important-design-principles\/\" target=\"_blank\">key design principles<\/a>,\u00a0<a title=\"Apple Watch: What Your Favorite Apps Will Look Like\" href=\"http:\/\/thinkapps.com\/blog\/design\/popular-apps-reimagined-apple-watch\/\" target=\"_blank\">popular mobile apps reimagined<\/a>, and\u00a0<a title=\"The Future of Health Apps on Apple Watch\" href=\"http:\/\/thinkapps.com\/blog\/development\/apple-watch-health-apps-healthkit\/\" target=\"_blank\">prototypes of HealthKit-enabled Watch apps<\/a>.)<\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-28-at-9.36.57-PM.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1239\" height=\"265\" class=\"alignnone size-full wp-image-1437\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-28-at-9.36.57-PM.png\" alt=\"Apple Watch Options\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-28-at-9.36.57-PM.png 1239w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-28-at-9.36.57-PM.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-28-at-9.36.57-PM.png 1024w\" sizes=\"(max-width: 1239px) 100vw, 1239px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">We won&#8217;t teach Objective-C or Swift, which is beyond the scope of this article, but rather allow you to observe and follow how an <span class=\"s2\">Apple Watch<\/span> app is created.\u00a0<\/span><\/p>\n<p class=\"p1\">Ready? Great, let&#8217;s get started.<\/p>\n<h2 class=\"p4\"><span class=\"s1\">1.\u00a0Setting Up Your Environment<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">The first step is to download\u00a0a sample iOS project.\u00a0As you may or may not know, Apple Watch apps need to be paired and bundled with an iPhone app; there&#8217;s no way to create a complete standalone Watch app at this stage.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">As we are focusing on extending an iPhone app to become an Apple Watch app, we won&#8217;t spend time on understanding the iPhone app code \u2014\u00a0we&#8217;ll leave that as an exercise for later on.\u00a0<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">We will work through Apple&#8217;s sample WatchKit project files, which are available <span class=\"s2\"><a title=\"WatchKit Sample Files\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/ios\/samplecode\/WKInterfaceCatalog\/Introduction\/Intro.html\" target=\"_blank\">here<\/a>.\u00a0<\/span><\/span>The sample project contains both an iPhone and WatchKit component, for your convenience, and will demonstrate a\u00a0wide array\u00a0of UI elements available on <span class=\"s2\">Apple Watch<\/span>.<\/p>\n<p class=\"p1\"><span class=\"s1\">You will need Xcode 6.2, which you can download <a title=\"Xcode 6.2\" href=\"https:\/\/developer.apple.com\/devcenter\/download.action?path=\/Developer_Tools\/xcode_6.2_beta_3_y9ikvy\/xcode_6.2_beta_3.dmg\" target=\"_blank\"><span class=\"s2\">here<\/span><\/a>. Open the project file in Xcode 6, and you will see the following:<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1393\" height=\"874\" class=\"alignnone wp-image-1426 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/1.png\" alt=\"Xcode 6 Project File\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/1.png 1393w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/1.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/1.png 1024w\" sizes=\"(max-width: 1393px) 100vw, 1393px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">Go ahead and run the project, by first making sure the target at the top shows <a title=\"WatchKit Catalog\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/ios\/samplecode\/WKInterfaceCatalog\/Introduction\/Intro.html\" target=\"_blank\"><span class=\"s2\">WatchKit Catalog<\/span><\/a>, then perform \u2318<\/span><span class=\"s4\"><b>R<\/b>.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"50\" class=\"alignnone size-full wp-image-1425\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/2.png\" alt=\"WatchKit Catelog\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/2.png 379w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/2.png 300w\" sizes=\"(max-width: 379px) 100vw, 379px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">You can now see the project run on your iPhone simulator, but you will get a simple screen, as illustrated below:<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/3-copy.png\"><img loading=\"lazy\" decoding=\"async\" width=\"510\" height=\"186\" class=\"alignnone size-full wp-image-1439\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/3-copy.png\" alt=\"WatchKit Catalog instructions\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/3-copy.png 510w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/3-copy.png 300w\" sizes=\"(max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">We also have a similar simulator for Apple Watch, which we will look at later. For now, we just have a simple iPhone app so we can use it as a vessel for demonstrating our Apple Watch app. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">So how does this all work? Well, since we won\u2019t be coding anything from scratch, I will help you navigate the project and explain how all the pieces fit together.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">2. iPhone App Component<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">As I mentioned previously, we need an iPhone app with which to bundle and associate the Apple Watch app, which you would eventually release concurrently. That\u2019s why we have a shell iPhone app.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1397\" height=\"872\" class=\"alignnone size-full wp-image-1423\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/4.png\" alt=\"Main.storyboard\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/4.png 1397w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/4.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/4.png 1024w\" sizes=\"(max-width: 1397px) 100vw, 1397px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">The iPhone component of this project consists of the <\/span><em><span class=\"s4\">Main.storyboard<\/span><\/em><span class=\"s1\"> (shown above), which contains just the sample <em>View Controller<\/em> with the text we saw in the simulator previously. That\u2019s all there is to the iPhone app component.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">3. WatchKit Architecture<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Going back to understanding the architecture of an Apple Watch app, it\u00a0consists of two parts: the <i>WatchKit app<\/i> and <i>WatchKit extension<\/i>. <\/span><\/p>\n<p class=\"p7\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1077\" height=\"621\" class=\"alignnone size-full wp-image-1422\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/5.png\" alt=\"WatchKit App and Extension Simulator\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/5.png 1077w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/5.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/5.png 1024w\" sizes=\"(max-width: 1077px) 100vw, 1077px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">So what gets loaded onto the Watch itself is the app, which is just the static resources and storyboard, but no code \u2014\u00a0nothing that\u2019s compiling at runtime. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">WatchKit acts as the conduit that connects to\u00a0the WatchKit extension, which resides on the iPhone side and contains the code and orchestrates the Watch app interface.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">When the user interacts with the Watch interface, WatchKit signals to the paired iPhone and WatchKit extension then creates the objects at runtime needed to manage the appropriate screen the user interacted with.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">I\u2019ve given you a brief overview of the architecture, but if you&#8217;re interested in learning\u00a0more about the lifecycle and other aspects, you can dive deeper into\u00a0<a title=\"Apple Watch Programming Guide\" href=\"https:\/\/developer.apple.com\/library\/prerelease\/ios\/documentation\/General\/Conceptual\/WatchKitProgrammingGuide\/index.html#\/\/apple_ref\/doc\/uid\/TP40014969-CH8-SW1\" target=\"_blank\"><span class=\"s2\">Apple<\/span><span class=\"s5\">\u2019<\/span><span class=\"s2\">s documentation<\/span><\/a>. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Now we will go through the <i>WatchKit App <\/i>component, looking at how the static interfaces are wired up.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">4. Creating the WatchKit App from an Existing iPhone App<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">For this tutorial, we won\u2019t need to create the WatchKit app components as they have already been provided for us. But in case you already have an existing iPhone app and want to create the components, we will go through the steps:<\/span><\/p>\n<h3 class=\"p1\">Step 1<\/h3>\n<p class=\"p1\"><span class=\"s1\">In Xcode, with your iPhone project open, select File &gt; New &gt; Target and then select Apple Watch.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1387\" height=\"872\" class=\"alignnone size-full wp-image-1420\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/7.png\" alt=\"Xcode New Project Screen\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/7.png 1387w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/7.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/7.png 1024w\" sizes=\"(max-width: 1387px) 100vw, 1387px\" \/><\/a><\/p>\n<h3 class=\"p1\"><span class=\"s1\">Step 2<\/span><\/h3>\n<p class=\"p1\"><span class=\"s1\">You are then presented with a screen allowing you to set the properties of the Watch app. You will also be asked whether you plan on supporting custom notification interface or glance screens (we have that in our sample project).\u00a0<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"734\" height=\"434\" class=\"alignnone size-full wp-image-1419\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/8.png\" alt=\"Properties of Apple Watch App\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/8.png 734w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/8.png 300w\" sizes=\"(max-width: 734px) 100vw, 734px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">Understanding how targets work in Xcode is beyond the scope of this article. But suffice to say, you essentially have multiple executables, including an executable target for the iPhone app and an executable target for the Watch extension, plus glance and notifications.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">5. WatchKit App Component<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Let\u2019s start by opening up the <i>Interface.storyboard<\/i> file within the WatchKit app folder in Xcode.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1397\" height=\"843\" class=\"alignnone size-full wp-image-1421\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/6.png\" alt=\"Interface.storyboard\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/6.png 1397w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/6.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/6.png 1024w\" sizes=\"(max-width: 1397px) 100vw, 1397px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">Remember, this is the <i>WatchKit App <\/i>component, and this gets side-loaded onto the Watch. The storyboard we see above contains all of the UI screens we would have on the app. You can explore the various\u00a0UI elements in the storyboard: select a button or a label, try changing the text, position, etc.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1149\" height=\"813\" class=\"alignnone size-full wp-image-1418\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/9.png\" alt=\"UI Storyboard\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/9.png 1149w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/9.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/9.png 1024w\" sizes=\"(max-width: 1149px) 100vw, 1149px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">The image above shows the screen elements, where you can interact with, add, update or\u00a0delete UI elements such as labels and buttons. You can drag in new UI elements into the screen from <\/span><span class=\"s6\"><b>3<\/b><\/span><span class=\"s1\"> and change the individual element properties such as label, color, etc. through <\/span><span class=\"s6\"><b>2<\/b><\/span><span class=\"s1\">.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">6. WatchKit Extension Component<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">The <i>WatchKit Extension<\/i> component is the logical part of your Watch app allowing you to compile <a title=\"Runtime\" href=\"http:\/\/en.wikipedia.org\/wiki\/Run_time_(program_lifecycle_phase)\" target=\"_blank\"><span class=\"s2\">runtime<\/span><\/a> code, update and set data values, and toggle visual appearances of UI elements, such as changing its alpha setting. Note that you are not able to remove UI objects, so most would simply change the element\u2019s alpha to 0 or toggle the element to hide it, which would then force other objects to fill the void.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">In Xcode, in the storyboard you were exploring just now, select the <i>Button<\/i> view controller, by clicking the top title once. Don\u2019t click on an individual UI element.\u00a0<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.47.25-PM.png\"><img loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"308\" class=\"alignnone size-full wp-image-1454\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.47.25-PM.png\" alt=\"Apple Watch Tutorial Images\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.47.25-PM.png 545w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.47.25-PM.png 300w\" sizes=\"(max-width: 545px) 100vw, 545px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">On the right, where we have the identity inspector (third icon), we have the <i>Custom Class<\/i>, which is where we associate a particular scene with a view controller class in our code. In this case, the <i>Button<\/i> scene is associated with <i>AAPLButtonDetailController<\/i>.\u00a0<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">If you press the little circle with an arrow inside, by the <i>AAPLButtonDetailController <\/i>text, you will be navigated to the <i>AAPLButtonDetailController.h<\/i> class file, but you can also reach that file from the left-hand file navigation pane.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/14.png\"><img loading=\"lazy\" decoding=\"async\" width=\"262\" height=\"98\" class=\"alignnone wp-image-1413 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/14.png\" alt=\"Left-Hand Navigation Pane\" \/><\/a><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1393\" height=\"808\" class=\"alignnone wp-image-1414 size-full\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/13.png\" alt=\"AAPLButtonDetailController.h\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/13.png 1393w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/13.png 300w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/13.png 1024w\" sizes=\"(max-width: 1393px) 100vw, 1393px\" \/><\/a><\/p>\n<p class=\"p12\"><span class=\"s1\">We won\u2019t get into too much more\u00a0detail with the code, but essentially an Objective-C view controller is composed of a header file (<\/span><span class=\"s7\"><i>AAPLButtonDetailController.h<\/i><\/span><span class=\"s1\">) and an implementation file (<\/span><span class=\"s7\"><i>AAPLButtonDetailController.m<\/i><\/span><span class=\"s1\">). The header files generally just expose the intentions of the class, whereas the implementation file is where the meat of the class resides.<\/span><\/p>\n<p class=\"p12\"><span class=\"s1\">Even without extensive programming experience, by merely observing the implementation class, you can pick up a few things. We have declared some variables\u00a0<\/span><span class=\"s1\">such as <em>defaultButton<\/em> and <em>hiddenButton <\/em>that are buttons\u00a0that map to\u00a0the UI elements we saw in the storyboard. We need to declare and associate any UI elements, such as buttons, if we need to interact with them in-code. <\/span><\/p>\n<p class=\"p12\"><span class=\"s1\">Scrolling down the class we can see various other interesting bits of code that we infer just by their names. Any <i>IBAction<\/i> methods are functions that react when you select a UI element like a button, and if you further inspected the storyboard element, you can see that method name linked to a button.\u00a0<\/span>The <i>hideAndShow<\/i> method in the code toggles whether to show or hide an element based on its previous state.<\/p>\n<p class=\"p12\"><span class=\"s1\">Go ahead and explore some of the other classes and how they are associated with the storyboard.<\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">7. Glances and Notifications<\/span><\/h2>\n<p class=\"p14\"><span class=\"s1\"><i>A glance is a supplemental way for the user to view important information from your app \u2026 A glance should provide immediately relevant information in a timely manner. For example, the glance for a calendar app might show information about the user\u2019s next meeting, while the glance for an airline app might display gate information for an upcoming flight.<\/i><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">So in Xcode, let\u2019s go back to the<span class=\"Apple-converted-space\">\u00a0<\/span><i>WatchKit App component <\/i>interface file and find the <i>Glance Interface Controller scene<\/i>.\u00a0<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/15.png\"><img loading=\"lazy\" decoding=\"async\" width=\"279\" height=\"242\" class=\"alignnone size-full wp-image-1412\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/15.png\" alt=\"Glance Interface Controller\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">Two noteworthy things to observe in the <i>glance<\/i> interface scene. First, the image has an outlet pointing to <i>glanceImage,<\/i> which would be found in the corresponding code class allowing the latter class to access and modify the image at runtime. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Second, as we did before, we can work out what class this storyboard scene is referring to in the <i>Identity Inspector<\/i>, which happens to be <i>AAPLGlanceController<\/i>. Once again, selecting the little arrow in the circle will navigate you to that class.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Glancing at the <em>AAPLGlanceController.m<\/em> implementation class, you can see a method called <i>willActivate<\/i>, a <i>WKInterfaceController <\/i>method that gets called whenever glance is about to be activated, allowing you to intercept the flow. In this case, we want to choose an appropriate image to load at runtime, depending on whether we have the larger 42mm Watch screen or smaller 38mm size.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">We also make use of <a title=\"Apple Handoff\" href=\"https:\/\/www.apple.com\/ios\/whats-new\/continuity\/\" target=\"_blank\">Handoff<\/a>, to pass control to a view controller, called <\/span><em><span class=\"s4\">imgeDetailController<\/span><\/em><span class=\"s1\">, along with some meta-information:<\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i>\/\/ Use Handoff to route the wearer to the image detail controller when the glance is tapped.<\/i><\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>[self updateUserActivity:@&#8221;com.example.apple-samplecode.WatchKit-Catalog&#8221; userInfo:@{<\/i><\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>@&#8221;controllerName&#8221;: @&#8221;imageDetailController&#8221;,<\/i><\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i><span class=\"Apple-converted-space\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span>@&#8221;detailInfo&#8221;: @&#8221;This is some more detailed information to pass.&#8221;<\/i><\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i><span class=\"Apple-converted-space\">\u00a0 \u00a0 <\/span>}];<\/i><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">We deal with determining whether the screen size of the Apple Watch is the larger one using the following code:<\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i> ([[WKInterfaceDevice currentDevice] screenBounds].size.width &gt; 136.0)<\/i><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">You get local and remote notifications for free if your iPhone app already supports that, as any notification on your phone will also come to your Apple Watch. You have two types of notifications: a more subtle, abbreviated notification and a long-look notification, if the user decides to further view the notification. You can\u00a0create customized notifications with custom graphics, content, and branding. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Going back to the storyboard, we find the <i>Static Notification Interface Controller. <\/i>As with glance, the implementation class takes advantage of the\u00a0<i>willActivate<\/i> method, but you also get access to two important protocol methods:<\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i>&#8211; (void)didReceiveLocalNotification:(UILocalNotification *)localNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler<\/i><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">The method above\u00a0is used when you want to show local notifications and need to use a dynamic interface, or you can fall back to the static notification.<\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/16.png\"><img loading=\"lazy\" decoding=\"async\" width=\"585\" height=\"266\" class=\"alignnone size-full wp-image-1411\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/16.png\" alt=\"Static v Dynamic Notifications\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/16.png 585w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/16.png 300w\" sizes=\"(max-width: 585px) 100vw, 585px\" \/><\/a><\/p>\n<p class=\"p1\"><span class=\"s1\">You are also able to handle remote notifications for either static or dynamic interfaces.<\/span><\/p>\n<p class=\"p18\" style=\"padding-left: 30px;\"><span class=\"s1\"><i>&#8211; (void)didReceiveRemoteNotification:(NSDictionary *)remoteNotification withCompletion:(void (^)(WKUserNotificationInterfaceType))completionHandler <\/i><\/span><\/p>\n<h2 class=\"p6\"><span class=\"s1\">Running the WatchKit Simulator<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">OK, enough of all that theory. Let\u2019s run the WatchKit app on our simulator and see how it works in practice.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\"> Change the target at the top from <i>WatchKit Catalog<\/i> to <i>WatchKit Catalog WatchKit App<\/i>, then press the play button or \u2318<\/span><span class=\"s4\"><b>R<\/b><\/span><span class=\"s1\"><i>.<\/i><\/span><\/p>\n<p class=\"p1\"><a href=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.51.11-PM.png\"><img loading=\"lazy\" decoding=\"async\" width=\"643\" height=\"383\" class=\"alignnone size-full wp-image-1456\" src=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.51.11-PM.png\" alt=\"Apple Watch Tutorial Images 2\" srcset=\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.51.11-PM.png 643w, https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Screen-Shot-2015-01-29-at-12.51.11-PM.png 300w\" sizes=\"(max-width: 643px) 100vw, 643px\" \/><\/a><\/p>\n<h2 class=\"p6\"><span class=\"s1\">Next Steps<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Besides the two targets we played with, you may also have noticed we have two more targets:\u00a0<i>Glance &#8211; WatchKit Catalog WatchKit App <\/i>and <i>Notification &#8211; WatchKit Catalog WatchKit App. <\/i><\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Give those two targets a run, and you can play around with how glances and notifications work. Be sure when you run them to keep your Xcode console in the background, so you can view\u00a0the log messages Apple has included\u00a0and\u00a0see when the\u00a0<i>willActivate<\/i> and <i>didActivate<\/i>\u00a0as well as <i>willDeactivate<\/i> functions in the code get called.<\/span><\/p>\n<div id=\"mc_embed_signup\">\n<form id=\"mc-embedded-subscribe-form\" class=\"validate\" action=\"\/\/thinkapps.us8.list-manage.com\/subscribe\/post?u=23ac491089b369f2d2827d202&amp;id=93a0ba233d\" method=\"post\" name=\"mc-embedded-subscribe-form\" novalidate=\"\" target=\"_blank\">\n<div id=\"mc_embed_signup_scroll\"><strong><label for=\"mce-EMAIL\">Get more Apple Watch content delivered directly to your inbox<\/label><\/strong><br \/>\n<input id=\"mce-EMAIL\" class=\"email\" name=\"EMAIL\" required=\"\" type=\"email\" value=\"\" placeholder=\"email address\" \/><br \/>\n<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--><\/p>\n<div style=\"position: absolute; left: -5000px;\"><input tabindex=\"-1\" name=\"b_23ac491089b369f2d2827d202_93a0ba233d\" type=\"text\" value=\"\" \/><\/div>\n<div class=\"clear\"><input id=\"mc-embedded-subscribe\" class=\"button\" name=\"subscribe\" type=\"submit\" value=\"Subscribe\" \/><\/div>\n<\/div>\n<\/form>\n<\/div>\n<p><!--End mc_embed_signup--><\/p>\n<p class=\"p1\"><a title=\"Apple Watch\" href=\"https:\/\/www.apple.com\/watch\/apple-watch\/\" target=\"_blank\"><em>Featured Image Credit<\/em><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.<\/p>\n","protected":false},"author":32,"featured_media":1436,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[30,66,158,159],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Develop Apple Watch Apps | via @ThinkApps<\/title>\n<meta name=\"description\" content=\"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Develop Apple Watch Apps | via @ThinkApps\" \/>\n<meta property=\"og:description\" content=\"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/doron.e.katz\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-29T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-03-31T17:58:56+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch.png\" \/>\n<meta name=\"author\" content=\"Doron Katz\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Doron Katz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\",\"url\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\",\"name\":\"How to Develop Apple Watch Apps | via @ThinkApps\",\"isPartOf\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png\",\"datePublished\":\"2015-01-29T18:00:00+00:00\",\"dateModified\":\"2015-03-31T17:58:56+00:00\",\"author\":{\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef\"},\"description\":\"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.\",\"breadcrumb\":{\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage\",\"url\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png\",\"contentUrl\":\"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png\",\"width\":867,\"height\":297,\"caption\":\"Apple Watch featured image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/localhost:8080\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Develop Apple Watch Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/localhost:8080\/blog\/#website\",\"url\":\"http:\/\/localhost:8080\/blog\/\",\"name\":\"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/localhost:8080\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef\",\"name\":\"Doron Katz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g\",\"caption\":\"Doron Katz\"},\"description\":\"A keen passion for emerging technologies, practices and methodologies, Doron embraces the vision of lean development with continuous customer development. Consultant for various startups, as a Project and Product Manager, with a mobile engineering background in iOS, and over 10 years of professional web development experience.\",\"sameAs\":[\"http:\/\/www.doronkatz.com\/\",\"https:\/\/www.facebook.com\/doron.e.katz\",\"https:\/\/www.linkedin.com\/in\/doronkatz\",\"https:\/\/x.com\/doronkatz\"],\"url\":\"https:\/\/thinkapps.com\/blog\/author\/doron\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Develop Apple Watch Apps | via @ThinkApps","description":"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/","og_locale":"en_US","og_type":"article","og_title":"How to Develop Apple Watch Apps | via @ThinkApps","og_description":"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.","og_url":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/","og_site_name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","article_author":"https:\/\/www.facebook.com\/doron.e.katz","article_published_time":"2015-01-29T18:00:00+00:00","article_modified_time":"2015-03-31T17:58:56+00:00","og_image":[{"url":"http:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch.png"}],"author":"Doron Katz","twitter_misc":{"Written by":"Doron Katz","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/","url":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/","name":"How to Develop Apple Watch Apps | via @ThinkApps","isPartOf":{"@id":"http:\/\/localhost:8080\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage"},"image":{"@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png","datePublished":"2015-01-29T18:00:00+00:00","dateModified":"2015-03-31T17:58:56+00:00","author":{"@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef"},"description":"This step-by-step tutorial shows you how to develop Apple Watch apps using the WatchKit SDK.","breadcrumb":{"@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#primaryimage","url":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png","contentUrl":"https:\/\/d1vqbpto5tbbz0.cloudfront.net\/blog\/wp-content\/uploads\/2015\/01\/29180000\/Apple-Watch-featured-image.png","width":867,"height":297,"caption":"Apple Watch featured image"},{"@type":"BreadcrumbList","@id":"https:\/\/thinkapps.com\/blog\/development\/how-to-develop-apple-watch-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/localhost:8080\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Develop Apple Watch Apps"}]},{"@type":"WebSite","@id":"http:\/\/localhost:8080\/blog\/#website","url":"http:\/\/localhost:8080\/blog\/","name":"Build Blog by ThinkApps | Content on Entrepreneurship, Mobile Apps, Web Platforms and more","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/localhost:8080\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/adfa0326436dfcb15fc0500da76cf0ef","name":"Doron Katz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/localhost:8080\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e5fee5f1ea1c8232bbd2b98a2505c67e?s=96&d=mm&r=g","caption":"Doron Katz"},"description":"A keen passion for emerging technologies, practices and methodologies, Doron embraces the vision of lean development with continuous customer development. Consultant for various startups, as a Project and Product Manager, with a mobile engineering background in iOS, and over 10 years of professional web development experience.","sameAs":["http:\/\/www.doronkatz.com\/","https:\/\/www.facebook.com\/doron.e.katz","https:\/\/www.linkedin.com\/in\/doronkatz","https:\/\/x.com\/doronkatz"],"url":"https:\/\/thinkapps.com\/blog\/author\/doron\/"}]}},"_links":{"self":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/1012"}],"collection":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/comments?post=1012"}],"version-history":[{"count":35,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/1012\/revisions"}],"predecessor-version":[{"id":2488,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/posts\/1012\/revisions\/2488"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media\/1436"}],"wp:attachment":[{"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/media?parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/categories?post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thinkapps.com\/blog\/wp-json\/wp\/v2\/tags?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}