{ "id": "142417", "key": "TIMOB-18337", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "16593", "description": "Release 4.0.0", "name": "Release 4.0.0", "archived": false, "released": true, "releaseDate": "2015-05-21" }, { "id": "16723", "description": "Windows Platform Support, ListView updates, Vector overlays in maps", "name": "Release 4.1.0", "archived": false, "released": true, "releaseDate": "2015-07-08" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-02-28T15:33:57.000+0000", "created": "2015-01-07T17:27:36.000+0000", "epic": { "id": 139983, "key": "TIMOB-18052", "name": "iOS: Support WatchKit", "summary": "iOS: Support WatchKit", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "47296", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "147010", "key": "TIDOC-2183", "fields": { "summary": "Create Native iOS App Extension and WatchKit app guide", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "47297", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "147015", "key": "TISTUD-7414", "fields": { "summary": "Add new 'extensions' element as a valid element in tiapp.xml editor", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-31T22:22:19.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "We need to investigate building a native share extension (and/or WatchKit app) and package that with a Titanium application.\r\n\r\nThis should result in the ability for an end user to drop this compiled piece into a Titanium project, and the CLI will understand how to package it correctly as part of the generated application", "attachment": [ { "id": "54973", "filename": "ScreenshotFiles.png", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-04-16T16:36:16.000+0000", "size": 8458, "mimeType": "image/png" }, { "id": "54244", "filename": "ShareExtention.zip", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-24T23:44:11.000+0000", "size": 211497, "mimeType": "application/zip" }, { "id": "54964", "filename": "WatchKitSupport.zip", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-04-16T00:09:32.000+0000", "size": 4827, "mimeType": "application/zip" } ], "flagged": false, "summary": "iOS: Allow manual addition of WatchKit/Share Extension to Titanium application", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 291, "state": "closed", "name": "2015 Sprint 01 SDK", "startDate": "2015-01-03T01:00:00.000Z", "endDate": "2015-01-17T01:00:00.000Z", "completeDate": "2015-01-19T17:24:40.828Z", "originBoardId": 114 }, { "id": 345, "state": "closed", "name": "2015 Sprint 04 SDK", "startDate": "2015-02-14T01:00:53.297Z", "endDate": "2015-03-01T01:00:00.000Z", "completeDate": "2015-02-28T15:39:43.652Z", "originBoardId": 114 }, { "id": 330, "state": "closed", "name": "2015 Sprint 03 SDK", "startDate": "2015-01-31T01:00:05.245Z", "endDate": "2015-02-14T01:00:00.000Z", "completeDate": "2015-02-16T21:01:51.914Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "343506", "author": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "body": "Could be cool to add keyboards to an app, like this: https://github.com/ryanfb/iOS-Ancient-Greek-Keyboard", "updateAuthor": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-02-16T15:38:40.000+0000", "updated": "2015-02-16T15:38:40.000+0000" }, { "id": "343777", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (Work in progress): https://github.com/appcelerator/titanium_mobile/pull/6647\r\n\r\nThis PR will allow extension _targets_ in external Xcode projects to be defined in the _tiapp.xml_. These extensions will be built and signed with the same certificate as the app (this is important) and then included in the titanium app. Please see the notes below for more details.\r\n\r\nh5. Notes:\r\n# Extensions currently need to be build natively.\r\n# Xcode 6.2 (beta) or newer must be installed to work with watchkit extensions\r\n# Currently WatchKit apps are will not launch in the simulator\r\n# The *projectPath* (defined in the _tiapp.xml_) must be absolute. Relative paths and using \"~\" are NOW supported on master.\r\n# The *Product Name* of the app extension must be *$(TARGET_NAME)*.\r\n# The *Bundle Identifier* of the app extension must begin with the *Bundle Identifier* of the app it will be included in. For example, if the bundle id of the app is _com.jalter.test_ then the bundle id of the extension could be _com.jalter.test.greekkeyboard_.\r\n# The app and the extension(s) should have different provisioning profiles unless using a *\r\n# If changes are made to the extension and they don't exist when the Titanium app is build, clean the build directory.\r\n\r\nh5. Testing\r\n# Create an extension in Xcode\r\n# In the *tiapp.xml* of your titanium app, add an *extensions* tag (next to the modules tag).\r\n# In the *extensions* tag, add an *extension* tag.\r\n# Add an attribute named *projectPath* to the *extension* tag. The value of the attribute should be the absolute path to the folder containing the Xcode project with your extension.\r\n# The _content_ of the *extension* tag should be the *target* name of the the extension in the Xcode project\r\n# Build your titanium application like normal for _simulator_ or _device_.\r\n\r\n{code}\r\n\r\n\r\n TestToday\r\n\r\n{code}\r\n\r\nh5. New APIs added to support extensions\r\nTo use these new features, an *App Group* must be setup for the app and the extension. See the *App Group* section for notes. See the docs for API usage examples. \r\n# *Ti.App.iOS.UserDefaults* is a new proxy that is essentially the same as Ti.App.Properties except it can be used to write to properties that are shared within an *App Group*.\r\n# *Ti.Filesystem.directoryForSuite* is a new method that returns the the path to a directory shared within an *App Group*.\r\n# *Ti.Database.open/install* methods now accept either a database name or a full path. This allows for the database to live in the directory returned by _directoryForSuite_.\r\n#* Developers of native extensions need to be careful not to create deadlocks when writing to shared directories https://developer.apple.com/library/ios/technotes/tn2408/_index.html\r\n\r\nh5. App Group Setup\r\n# Add the “App Groups” entitlement to your App ID (in the Provisioning Portal)\r\n# Add the “App Groups containers” entitlement to your App ID (in the Provisioning Portal)\r\n# Add the “App Groups” entitlement to your entitlements file\r\n#* Use a custom Entitlements.plist by copying it from the build dir into the root of the app project next to Resources. Edit the file to add your app group\r\n{code}\r\ncom.apple.security.application-groups\r\n\r\n group.jalter.TodayExtentionSharing\r\n\r\n{code}", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-18T17:13:16.000+0000", "updated": "2015-03-03T18:06:36.000+0000" }, { "id": "343805", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~viezel] If you would like to try this PR with the extension you mentioned. Make sure you pay special attention to the following points as they will both need to be changed in the Xcode project in that repo:\r\n# The *Product Name* of the app extension must be *$(TARGET_NAME)* (change this under *Build Settings*)\r\n# The *Bundle Identifier* of the app extension must begin with the *Bundle Identifier* of the app it will be included in. For example, if the bundle id of the app is _com.jalter.test_ then the bundle id of the extension could be _com.jalter.test.greekkeyboard_.", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-18T18:59:33.000+0000", "updated": "2015-02-18T18:59:33.000+0000" }, { "id": "344260", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "h5. More Testing Resources\r\n* *ShareExtention.zip* (attached to this ticket) Xcode project with native extensions that can be used for testing. Can be used with the titanium example app to test some of the new features.\r\n* *[Titanium Example gist|https://gist.github.com/jonalter/bdd224974368899b78a8]* Shows writing to UserDefaults and Filesystem\r\n* Download the latest ci build from the [master branch|http://builds.appcelerator.com.s3.amazonaws.com/index.html#master]\r\n\r\nThe *Bundle Ids* and *App Group id* for of these examples will need to be changed.\r\n\r\n", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-24T23:44:11.000+0000", "updated": "2015-03-03T18:07:47.000+0000" }, { "id": "344723", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "[~jalter] - Trying to play with this today as I have some time. Here are some things I ran in to:\r\n\r\n1. I must be doing something wrong because when I point to the extension, I get: https://db.tt/wmQpFlTv\r\n\r\n2. if I point to the root dir that has the Xcode project (not the extension dir), I get: https://db.tt/3ZG0nYSv\r\n\r\n3. Here's my complete setup, per your instructions above:\r\n- Product Name: https://db.tt/edXUzQmD\r\n- tiapp.xml - https://gist.github.com/rblalock/f1354acd9e34356795fb\r\n- Bundle ID: com.xidlabs.WatchKitExample.Sample.watchkitextension\r\n- Ti APP ID: com.xidlabs.WatchKitExample", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2015-03-01T19:08:24.000+0000", "updated": "2015-03-01T19:08:24.000+0000" }, { "id": "344724", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "Ok #2 was my bad. I needed to make sure xcode-select was pointed at the right Xcode. The app compiles and runs now. The watch kit app doesn't run though. This might just be my ignorance in how its supposed to boot up but right now the watch sim just has a black screen (unlike the app extension...which has a label and a button I dropped on there).", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2015-03-01T19:16:44.000+0000", "updated": "2015-03-01T19:16:44.000+0000" }, { "id": "344796", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We are not able to launch the WatchKit app in the sim yet.", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-02T17:40:15.000+0000", "updated": "2015-03-02T17:40:15.000+0000" }, { "id": "345460", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Backport to 3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6700\r\nReverting backport to 3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6750\r\n\r\nBackport to 4_0_X: https://github.com/appcelerator/titanium_mobile/pull/6751", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-09T18:08:11.000+0000", "updated": "2015-03-27T18:18:13.000+0000" }, { "id": "345545", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thank you Jon, great work! One question: If not in the simulator, how are we able to test the watchkit apps, yet?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-03-10T14:44:41.000+0000", "updated": "2015-03-10T14:44:41.000+0000" }, { "id": "345546", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "I might be guessing here, but I read it as you did first time - but re-reading I noticed the word in the middle.\r\n\r\n\"We are not able to *launch* the WatchKit app in the sim yet.\"\r\n\r\nGuessing that means you manually launch it and then run the project - phone sim starts, watch sim would be ready. If it means you also/instead of manually start the app from the sim launcher the compile and press the icon when the console says finished.\r\n\r\nAgain - not tried yet, just a guess. \r\n\r\nI now do not take it to mean you _cannot_ simulate.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2015-03-10T14:54:11.000+0000", "updated": "2015-03-10T14:54:11.000+0000" }, { "id": "345562", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The Titanium CLI isn't yet able to *launch* the WatchKit app in the simulator although it is packaged and installed. \r\n\r\nHere are a couple options that should get you going until this functionality is available through Titanium.\r\n# Launch the WatchKit app from the Xcode project that was used to build it. This will not test it running with a Titanium app, but it is probably the fastest way to get it running in the sim. Xcode supports launching WatchKit apps in the sim to any of the app's interfaces (*Main*, *Glance*, *Notification*).\r\n# Build and run the Titanium app that contains the WatchKit app. Once the Titanium app (with a WatchKit app) is launched in the simulator, you can launch the simulator app using {{simctl}} and the bundle id of the WatchKit app. This will allow you to launch the *Main* interface. I am not currently aware of a way to launch to the *Glance* or *Notification* interfaces using {{simctl}}.\r\n{code}\r\nxcrun simctl launch booted \r\n{code}", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-10T16:30:02.000+0000", "updated": "2015-04-16T17:45:04.000+0000" }, { "id": "345574", "author": { "name": "underlabs", "key": "underlabs", "displayName": "Joseph Sachs", "active": true, "timeZone": "America/Montreal" }, "body": "I'm assuming we can't create *currently* in XCode the Today's Extension for a Ti App in Swift? Or is it possible?", "updateAuthor": { "name": "underlabs", "key": "underlabs", "displayName": "Joseph Sachs", "active": true, "timeZone": "America/Montreal" }, "created": "2015-03-10T18:46:31.000+0000", "updated": "2015-03-10T18:47:30.000+0000" }, { "id": "345593", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~underlabs] Swift extensions are working fine on my end. Try it out and let us know how it goes.", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-10T20:13:04.000+0000", "updated": "2015-03-10T20:13:04.000+0000" }, { "id": "349042", "author": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hi all,\r\n\r\nIm about to send my app to apple approval, but I cannot get xCode to successfully validate my watchkit app. \r\n\r\nThis is what I did:\r\n\r\n1. Ive created a native watchkit app and extension and it works great in xcode. \r\n2. ive linked the extension and titanium together using the new tag in tiapp.xml. Followed Jon Alters guide. \r\n3. Im using the Ti SDK 4.0.0.Beta2\r\n4. Currently I cannot get titanium to open the watchkit simulator - so I just assume that it works. I can tell from the build log that titanium is picking up the extension and adding it. \r\n5. Ive created 3 app ids, and 3 provisioning profiles. 1 for the app, 1 for the watchkitapp and 1 for the watchkit extension\r\n6. ive gone into xcode and code signed the different apps with their appropiate provisioning profile.\r\n7. back into Ti Studio and Package the app for iOS Itunes Store (like i normally would). This works fine.\r\n8. the app is added to the xcode archieves, and I try to validate the app against apple rules.\r\n9. Booom! Validation errors. see image: http://cl.ly/image/0v150w212V2O\r\n\r\nWhat can I do to get this shipped to approval?\r\nMads", "updateAuthor": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-04-09T15:08:02.000+0000", "updated": "2015-04-09T15:08:02.000+0000" }, { "id": "349670", "author": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "body": "\r\n\r\nI have built a native WatchKit exstension that runs perfectly in the simulator. After linking it to my Titanium project, it builds succesfully without error.\r\n\r\nUsing the \"xcrun simctl launch booted [MY_WATCH_APP_BUNDLE_ID]\" comand, the watch app gets launched, but all i see is the spinning 'loading' wheel. Upon investigation of the logs, i found the following errors:\r\n\r\n2015-04-15T09:50:11.879 companionappd[12756] (Warn ) WatchKit: Unable to start plugin [MY_WATCH_APP_EXTENSION_BUNDLE_ID] 0x7fd142f2bac0 with identifier [MY_WATCH_APP_BUNDLE_ID] (Error Domain=NSCocoaErrorDomain Code=4097 \"The operation couldn’t be completed. (Cocoa error 4097.)\" (connection to service named [MY_WATCH_APP_EXTENSION_BUNDLE_ID] UserInfo=0x7fd142e48700 {NSDebugDescription=connection to service named [MY_WATCH_APP_EXTENSION_BUNDLE_ID] })\r\n\r\n2015-04-15T09:50:11.880 companionappd[12756] (Error) WatchKit: activePlugInForIdentifier: returned nil for application [MY_WATCH_APP_BUNDLE_ID]\r\n\r\nIt seems like the app cannot communicate with the phone extension, is this a bug in Titanium's compiling of the project? \r\nAny help with this is would be greatly apprechieated as it is almost Watch launch day and nothing is working!\r\n\r\nJamie.", "updateAuthor": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "created": "2015-04-15T10:01:44.000+0000", "updated": "2015-04-15T10:01:44.000+0000" }, { "id": "349683", "author": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "body": "It seems like this phase 1 had the scope of compiling a version of a titanium app where the extension is bundled for testing. This seems to work. \r\nWhat does not seem to work is how would be want to distribute it to App Store. Using the Titanium CLI it will create a xcode project with an embedded watchkit extension. This is great, but since the generated xcode project have only 3 targets (projectname, projectname-iPad and projectname-universal) and not the two new target of \"projectname WatchKit Extension\" and \"projectname WatchKit App\", then how would that ever work?\r\nIt seems that xcode needs those two new targets in order to create a xcarchive for App Store that actually contains the watchkitextension (WK). if im wrong - then at least have the generated xcode project point to the embedded extension targets. \r\n\r\n", "updateAuthor": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-04-15T13:55:08.000+0000", "updated": "2015-04-15T13:55:08.000+0000" }, { "id": "349764", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~jdrucey][~viezel] I haven't yet been able to reproduce the [~jdrucey]'s issue regarding launching the watch app bundle id via simctl yet.\r\n\r\nI was able to reproduce the issue where Apple emails you with a message about an \"Invalid Binary\" after you up \"Submit to App Store...\".\r\nFollow the instructions below and let me know how it goes.\r\n\r\n1. Build your Titanium app for the App Store\r\n2. In the xcode organizer right/ctrl click on the \"Archive\" and click \"Show in Finder\"\r\n3. In the finder right/ctrl click on the `.xcarchive` file and click \"Show Package Contents\"\r\n4. Unzip the attached `WatchKitSupport.zip` and add it to your `.xcarchive` as seen here: !ScreenshotFiles.png!\r\n5. Submit the archive to the App Store and let us know your results.\r\n\r\nThanks for your help.", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-04-16T00:09:00.000+0000", "updated": "2015-04-16T16:36:42.000+0000" }, { "id": "349794", "author": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hallelujah !! That actually works. Ive sent my app to review now.. fingers crossed. ", "updateAuthor": { "name": "viezel", "key": "viezel", "displayName": "Mads Moller", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-04-16T07:56:00.000+0000", "updated": "2015-04-16T07:56:00.000+0000" }, { "id": "349817", "author": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "body": "Well whatever it is, it has certainly done the trick! It is now in review. These are nervous times..", "updateAuthor": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "created": "2015-04-16T10:22:35.000+0000", "updated": "2015-04-16T10:22:35.000+0000" }, { "id": "350101", "author": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "body": "So, not all is as it seems, app was rejected by Apple as the Watch app simply does not work. This is still an issue!", "updateAuthor": { "name": "jdrucey", "key": "jdrucey", "displayName": "Jamie Druce", "active": true, "timeZone": "Europe/London" }, "created": "2015-04-20T10:25:18.000+0000", "updated": "2015-04-20T10:25:18.000+0000" }, { "id": "416590", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed, if there are any problems, please file a new ticket.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-31T22:22:19.000+0000", "updated": "2017-03-31T22:22:19.000+0000" } ], "maxResults": 23, "total": 23, "startAt": 0 } } }