{ "id": "150916", "key": "TIMOB-19455", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-02-19T03:32:55.000+0000", "created": "2015-09-02T08:30:18.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "notable", "watchOS2" ], "versions": [ { "id": "16925", "description": "WatchKit Support--all going into 5.0 now", "name": "Release 5.0.0", "archived": true, "released": true, "releaseDate": "2015-09-16" } ], "issuelinks": [ { "id": "50256", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "153464", "key": "TIMOB-20070", "fields": { "summary": "iOS Apple watch Integration | Embedded Content Contains Swift Code is not enabled error", "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": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "50011", "type": { "id": "10120", "name": "Gantt: finish-start", "inward": "has to be done after", "outward": "has to be done before" }, "outwardIssue": { "id": "153557", "key": "TIMOB-20083", "fields": { "summary": "Remove watchos1 template and related code", "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": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "49965", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "150758", "key": "CLI-794", "fields": { "summary": "\"appc new --type applewatch\" should default to watchos2 instead of watchkit1", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "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 } } } }, { "id": "50319", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "154392", "key": "TISTUD-7960", "fields": { "summary": "Add Swift versions of the applewatch templates", "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": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-16T22:46:15.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": "12803", "name": "Templates", "description": "Templates for Titanium Mobile" } ], "description": "Our current [applewatch|https://github.com/appcelerator/titanium_mobile/tree/master/templates/applewatch] templates are in Obj-C while many Xcode developers are switching to Swift. Titanium developers with no/little Xcode experience will likely also find Swift easier.\r\n\r\nSo, we should have Swift-versions of the applewatch templates and probably default to that.\r\n\r\n* {{watchos2-swift}} Swift (new default)\r\n* {{watchos2-objc}} Obj-C (current)\r\n\r\nPR: https://github.com/appcelerator/titanium_mobile/pull/7496", "attachment": [], "flagged": false, "summary": "Add Swift versions of the applewatch templates", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": "SDK 5.0.0.v20150901105514", "closedSprints": [ { "id": 536, "state": "closed", "name": "2015 Sprint 25 SDK", "startDate": "2015-12-05T01:30:40.415Z", "endDate": "2015-12-19T01:30:00.000Z", "completeDate": "2015-12-29T03:19:42.127Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "362043", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~rblalock] since you use Swift for your Watch app, could look into this maybe?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-09-02T08:31:05.000+0000", "updated": "2015-09-02T08:31:05.000+0000" }, { "id": "362066", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "[~fokkezb] - you just want the sample app in swift code?", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2015-09-02T12:55:23.000+0000", "updated": "2015-09-02T12:55:23.000+0000" }, { "id": "362330", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~rblalock] No, Swift versions of these templates:\r\nhttps://github.com/appcelerator/titanium_mobile/tree/master/templates/applewatch", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-09-04T19:08:09.000+0000", "updated": "2015-09-04T19:08:09.000+0000" }, { "id": "362550", "author": { "name": "jasonkneen", "key": "jasonkneen", "displayName": "Jason Kneen", "active": true, "timeZone": "Europe/London" }, "body": "Horrific - why on earth were the templates written in ObjC?? Aggro", "updateAuthor": { "name": "jasonkneen", "key": "jasonkneen", "displayName": "Jason Kneen", "active": true, "timeZone": "Europe/London" }, "created": "2015-09-08T17:40:21.000+0000", "updated": "2015-09-08T17:40:21.000+0000" }, { "id": "367089", "author": { "name": "Spaceghost", "key": "spaceghost", "displayName": "John McMahon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Another headache is that you cannot use Swift even if you want to within the watch OS2 extension Xcode project, nor can you add a share extension or other app extension using the same template Xcode file paradigm... because I want to add a swift share extension I figured I would add swift code to the watchOS2 Xcode template.\r\n\r\nNo matter what I do I get an Xcode compile error:\r\n\r\n[ERROR] : iOS extension \"xxx\" target \"xxx WatchApp Extension\" contains Swift code, but \"Embedded Content Contains Swift Code\" is not enabled.\r\n\r\nAnd yes, I set the Embedded Content Contains Swift Code setting in the watchOS2 template AND the Titanium.xcodeproj files to no avail.\r\n\r\nMy overall complaint is that this is all extremely circuitous and it seems if Appcelerator would just make it convenient to merge Xcode projects at build time, we could have all of the extension support we wanted without the byzantine workarounds to nowhere.", "updateAuthor": { "name": "Spaceghost", "key": "spaceghost", "displayName": "John McMahon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-10-18T06:40:17.000+0000", "updated": "2015-10-18T06:40:17.000+0000" }, { "id": "367115", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~Spaceghost] what SDK version are you using? The error you mention should have been fixed by TIMOB-18844 in April.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-10-19T06:16:19.000+0000", "updated": "2015-10-19T06:16:19.000+0000" }, { "id": "371447", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "PR on master:\r\nhttps://github.com/appcelerator/titanium_mobile/pull/7496\r\n\r\nTested both watchos2 (now watchos2-objc) and watchos2-swift on Simulator and device.\r\n\r\n[~cbarber] I can't get watchos1 (before or after changes) to build. Can't we just remove this template and the related stuff in {{_build.js}}?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-25T12:11:09.000+0000", "updated": "2015-11-25T12:11:09.000+0000" }, { "id": "371449", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Since this renames {{watchos2}} to {{watchos2-swift}} *and* makes it default this ticket should either replace CLI-794 or be merged after.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-25T12:28:43.000+0000", "updated": "2015-11-25T12:28:43.000+0000" }, { "id": "371452", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Note: as part of this PR I reverted most of TIMOB-19412 except for adding the WatchConnectivity framework and creating the watch session when the app activates. This is enough to get people started and allow them to verify it works by listening to {{Ti.Watchsession:watchstatechanged}} or {{reachabilitychanged}}.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-25T12:45:20.000+0000", "updated": "2015-11-25T12:45:20.000+0000" }, { "id": "371861", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-12-02T03:50:39.000+0000", "updated": "2015-12-02T03:50:39.000+0000" }, { "id": "371881", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~cng] my PR just removes the watchos1 template, not the related code in the build script. We can do that later since it's not affecting anything. And for the sake of getting this PR merged I think it's better to rip out that code later and keep the changes to {{_build.js}} minimal for now.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-12-02T07:31:38.000+0000", "updated": "2015-12-02T07:31:38.000+0000" }, { "id": "371884", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "As commented in CLI-794 we should *not* merge that, but this one instead and close CLI-794 as invalid. It would only result in having two places where we set the default watch template, which is no good.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-12-02T07:34:38.000+0000", "updated": "2015-12-02T07:34:38.000+0000" }, { "id": "373187", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Backport for 5.2.0: https://github.com/appcelerator/titanium_mobile/pull/7589", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-12-17T08:18:07.000+0000", "updated": "2015-12-17T08:18:07.000+0000" }, { "id": "373191", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "FT passed. PRs merged!.\r\n\r\nh4. Steps to test\r\n1. *appc new* -> Native App\r\n2. enter project\r\n3. *appc new* -> Apple Watch App\r\n4. *appc run -p ios --launch-watch-app*\r\n5. repeat step 1-2\r\n6. *appc new -t applewatch --template watchos2-swift*\r\n7. *appc run -p ios --launch-watch-app*\r\n8. repeat step 1-2\r\n9. *appc new -t applewatch --template watchos2*\r\n10. *appc run -p ios --launch-watch-app*\r\n11. repeat step 1-2\r\n12. *appc new -t applewatch --template watchos2-objc*\r\n13. *appc run -p ios --launch-watch-app*\r\n14. repeat all using device\r\n\r\nh4. Expected results\r\nat 3. Look inside extensions//Extension/ you should see swift files\r\nat 4. builds normally\r\nat 6. Look inside extensions//Extension/ you should see swift files\r\nat 7. builds normally\r\nat 9. Look inside extensions//Extension/ you should see m and h files\r\nat 10. builds normally\r\nat 2. Look inside extensions//Extension/ you should see m and h files\r\nat 13. builds normally\r\nat 14. same results as above.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-12-17T09:02:52.000+0000", "updated": "2015-12-17T09:04:34.000+0000" }, { "id": "373874", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~kkolipaka] please take note of this and see if studio needs a ticket to conform with this. If so, it has to be ready for 5.2.0", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-01-06T04:23:15.000+0000", "updated": "2016-01-06T04:23:15.000+0000" }, { "id": "373893", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~kkolipaka] I think it needs updates here:\r\n\r\n* https://github.com/appcelerator/titanium_studio/blob/master/plugins/com.appcelerator.titanium.ios.core/src/com/appcelerator/titanium/ios/core/IOSConstants.java#L85-L93 (\r\n* https://github.com/appcelerator/titanium_studio/search?q=APPLEWATCHKIT&type=Code\r\n\r\nI think it would be best to leave out the {{--template}} option so that you let the CLI pick the default for the type, but the problem is that currently that default is still {{watchos1}}. With 5.2 it will become {{watchos2-swift}}, but we won't drop the Obj-C {{watchos2}} until 6.0. So I think we should check the SDK version of the project and if it's >= 5.2 leave out the option.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-01-06T08:26:46.000+0000", "updated": "2016-01-06T08:26:46.000+0000" }, { "id": "374817", "author": { "name": "kkolipaka", "key": "kkolipaka", "displayName": "Kondal Kolipaka", "active": false, "timeZone": "America/Los_Angeles" }, "body": "[~fokkezb] [~cng] Studio changes will be addressed through TISTUD-7960", "updateAuthor": { "name": "kkolipaka", "key": "kkolipaka", "displayName": "Kondal Kolipaka", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-01-19T08:20:56.000+0000", "updated": "2016-01-19T08:20:56.000+0000" }, { "id": "377251", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Reopening because for some reason this no longer works in the 5.2.0 RC. When I generate an extension with the Obj-C template it works, but when I use the new (default) Swift template it starts to load (shows spinner) the Watch app and then fails with:\r\n\r\n{code}\r\n[ERROR] [Ti 5.2.0 WatchKit App] (Error) WatchKit: We've held the CSLSActivatingUIAssertion for 30 secs. Giving up\r\n{code}\r\n\r\nWhen I install on my hardware it says:\r\n\r\n{code}\r\nFeb 18 17:20:32 Fokkes-AppleWatch Ti 5.2.0 WatchKit Extension[3874] : WatchKit error - unable to find interface controller class '_TtC27Ti_5.2.0_WatchKit_Extension19InterfaceController' to instantiate\r\nFeb 18 17:20:32 Fokkes-AppleWatch Ti 5.2.0 WatchKit Extension[3874] : (Error) WatchKit: ComF: -[SPRemoteInterface _interfaceControllerWithID:] interfaceController for interfaceControllerID:F210002 not found (clientIdentifier=(null))\r\nFeb 18 17:20:32 Fokkes-AppleWatch Ti 5.2.0 WatchKit Extension[3874] : (Error) WatchKit: ComF: -[SPRemoteInterface _interfaceControllerWithID:] interfaceController for interfaceControllerID:F210002 not found (clientIdentifier=(null))\r\nFeb 18 17:20:32 Fokkes-AppleWatch Ti 5.2.0 WatchKit Extension[3874] : *********** ERROR -[SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientIdentifier for interfaceControllerID:F210002 not found\r\nFeb 18 17:20:32 Fokkes-AppleWatch Ti 5.2.0 WatchKit Extension[3874] : (Error) WatchKit: ComF:<-Plugin _RunLoopHandler controller ID F210002 has no client identifier\r\n{code}", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-02-18T16:21:30.000+0000", "updated": "2016-02-18T16:21:30.000+0000" }, { "id": "377282", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "The Watch App couldn't find the Extension with the InterfaceController because the {{IBSC_MODULE}} we populated only stripped out spaces, but not other non-alphanum characters.\r\n\r\nFix for master: https://github.com/appcelerator/titanium_mobile/pull/7754\r\nBackport for 5_2_X: https://github.com/appcelerator/titanium_mobile/pull/7755\r\n\r\nTested with the same project as above and works like clockwork.\r\n\r\n[~cng] or [~cbarber] could you review and merge for 5.2.0?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-02-18T19:02:36.000+0000", "updated": "2016-02-18T19:03:02.000+0000" }, { "id": "377317", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Approved. PRs merged.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-02-19T03:32:49.000+0000", "updated": "2016-02-19T03:32:49.000+0000" } ], "maxResults": 21, "total": 21, "startAt": 0 } } }