{ "id": "169804", "key": "TIMOB-25301", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "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": "19906", "description": "", "name": "Release 6.3.0", "archived": false, "released": true, "releaseDate": "2017-11-01" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2017-10-16T21:45:00.000+0000", "created": "2017-09-16T10:25:45.000+0000", "epic": { "id": 169755, "key": "TIMOB-25267", "name": "iOS: Add support for iPhone X", "summary": "iOS: Add support for iPhone X", "color": { "key": "color_5" }, "done": false }, "priority": { "name": "Critical", "id": "1" }, "labels": [ "iphonex" ], "versions": [ { "id": "18414", "description": "", "name": "Release 6.2.0", "archived": false, "released": true, "releaseDate": "2017-09-13" } ], "issuelinks": [ { "id": "56700", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "171980", "key": "TIMOB-26246", "fields": { "summary": "Android: Handle Android P insetting/display-cutout", "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": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-07-27T23:11:35.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": "I am not sure what property will allow control over the indents that seem to automatically happen when the device is rotated into Landscape, but we really need to be able to control these.\r\n\r\nThe \"Designing for iPhone X\" video from Apple mentioned that \"Even if you are not using Auto Layout, UIView provides the Safe Area Insets and Layout Margin values as properties.\"\r\n\r\nThere are many instances in my app where a rotation to Landscape causes messy UI issues. If I can programmatically control the Insets and Layout Margin, particularly when it affects ListViews and TableViews, that would be great.\r\n\r\nFor example see the attached screenshot. I would like to programmatically disable the margin on the ListView if the orientation is LANDSCAPE_RIGHT, as the margin is unnecessary and ugly. But obviously if rotated the other way, then the indent / margin is needed.", "attachment": [ { "id": "63284", "filename": "iPhone_X_-_iOS_11_0_and_Desktop_—_Local.png", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-09-16T10:27:59.000+0000", "size": 148653, "mimeType": "image/png" }, { "id": "63283", "filename": "iPhone_X_-_iOS_11_0_and_Desktop_—_Local.png", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-09-16T10:25:14.000+0000", "size": 154287, "mimeType": "image/png" } ], "flagged": false, "summary": "iPhone X: Need to be able to control the Insets / Layout Margins", "creator": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "subtasks": [], "reporter": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "environment": null, "comment": { "comments": [ { "id": "427962", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey there, thank you for this ticket as well! Really great feedback. We are working on the safe-area updates already and currently designing it in a way it's easy to adapt. Maybe a new property {{useSafeArea: [true/false]}} would make sense? Let me know if you have thoughts that would help from a developers perspective!\r\n\r\nP.S.: Nice app, you should show-case that :-)", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-09-16T14:15:07.000+0000", "updated": "2017-09-16T14:15:31.000+0000" }, { "id": "427965", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "body": "@Hans thanks for the feedback :)\r\n\r\nI don't have a total understanding of the options that Apple is making available. Is the useSafeArea a tiapp.xml entry? Or a window property? Or a ListView/TableView property? \r\n\r\nAlthough there may be an app level or window level setting, I would love to be able to control the useSafeArea true/false at a ListView/TableView level. i.e. not just when the ListView is initially created, but at any time. This is because I would like to have a different inset value for LANDSCAPE_LEFT as opposed to LANDSCAPE_RIGHT. So I would need to be able to change this on the ListView or TableView when the orientation change is detected.\r\n\r\nBeyond that I am not sure, but seem to see vague references to Layout Margins, and the ability to control these? If it is possible to control the Layout Margins at a granular level then that also would be great and I think give developers the flexibility they need for various situations. The default Layout Margins will likely be ok \"most\" of the time, but Apple has thrown us a real curve-ball here if we do anything too creative, which of course we want to be able to do. So if we are able to control the size of the Margin at a granular level that would also be very welcome.\r\n\r\nI hope that helps. As mentioned, I am not totally confident about the options Apple makes available, so forgive me if some of the things I mention are not possible.", "updateAuthor": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-09-16T20:20:51.000+0000", "updated": "2017-09-16T20:20:51.000+0000" }, { "id": "428217", "author": { "name": "benutzername", "key": "benutzername", "displayName": "Sebastian Klaus", "active": true, "timeZone": "Europe/Berlin" }, "body": "Something like *useSafeArea* in the tiapp.xml would be very comfortable", "updateAuthor": { "name": "benutzername", "key": "benutzername", "displayName": "Sebastian Klaus", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-09-21T06:40:31.000+0000", "updated": "2017-09-21T06:40:31.000+0000" }, { "id": "428220", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "We are working on a Window-based {{extendSafeArea}} property that allows developers to manually extend the safe-area per window. It will be {{false}} by default, respecting the safe-area. For properties like {{backgroundColor}}, {{backgroundGradient}} and {{backgroundImage}}, it will still extend the layout automatically to not have any black bars at the top and bottom. In addition, root-containers like Ti.UI.iOS.NavigationWindow and Ti.UI.TabGroup, as well as the Ti.UI.Window.toolbar will adjust automatically as managed by iOS. ", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-09-21T06:58:04.000+0000", "updated": "2017-09-21T06:58:04.000+0000" }, { "id": "428232", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "body": "@Hans that sounds great thank you.\r\n\r\nJust wanted to verify that the property can be applied dynamically, not just when the window is initially created. Hopefully :)\r\n\r\nThanks for your efforts.", "updateAuthor": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-09-21T09:31:06.000+0000", "updated": "2017-09-21T09:31:06.000+0000" }, { "id": "428291", "author": { "name": "matthewlberg", "key": "matthewlberg", "displayName": "Matt Berg", "active": true, "timeZone": "America/Chicago" }, "body": "To add to this ticket, would it be possible to get access to the safeAreaLayoutGuide? That way we could programmatically get the values (view.safeAreaLayoutGuide.topAnchor)\r\n\r\nExample here: https://www.bignerdranch.com/blog/wwdc-2017-large-titles-and-safe-area-layout-guides/", "updateAuthor": { "name": "matthewlberg", "key": "matthewlberg", "displayName": "Matt Berg", "active": true, "timeZone": "America/Chicago" }, "created": "2017-09-21T23:16:31.000+0000", "updated": "2017-09-21T23:16:31.000+0000" }, { "id": "428375", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Master (PR) : https://github.com/appcelerator/titanium_mobile/pull/9475\r\n\r\nTest Case 1 -\r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: 'yellow',\r\n extendSafeArea : true\r\n});\r\n\r\nvar btn = Ti.UI.createButton({\r\n left:0,\r\n top:0,\r\n title: 'Trigger'\r\n});\r\n\r\n\r\n\r\nvar win2 = Ti.UI.createWindow({\r\n backgroundColor: 'green',\r\n extendSafeArea : false\r\n});\r\n\r\nvar btn2 = Ti.UI.createButton({\r\n bottom:0,\r\n title: 'Trigger2'\r\n});\r\n\r\nwin2.add(btn2);\r\n\r\nvar btn3 = Ti.UI.createButton({\r\n top:0,\r\n title: 'Trigger3'\r\n});\r\n\r\nwin2.add(btn3);\r\n\r\nwin.addEventListener('click', function() {\r\n Ti.API.info('Hello world!');\r\n win2.open();\r\n});\r\n\r\nbtn2.addEventListener('click', function() {\r\n Ti.API.info('Hello world!');\r\n win2.close();\r\n});\r\n\r\nwin.add(btn);\r\nwin.open();\r\n\r\n{code}\r\n\r\nTest Case 2 -\r\n\r\n\r\n{code:java}\r\nvar win1 = Ti.UI.createWindow({\r\n backgroundColor: 'blue',\r\n title: 'Blue',\r\n extendSafeArea:true\r\n});\r\nvar label1 = Ti.UI.createLabel({\r\n text: 'I am a blue window.',\r\n top: 0,\r\n left: 0\r\n});\r\nwin1.add(label1);\r\n\r\nvar win2 = Ti.UI.createWindow({\r\n backgroundColor: 'red',\r\n title: 'Red'\r\n});\r\nvar label2 = Ti.UI.createLabel({\r\n text: 'I am a red window.',\r\n top: 0,\r\n left: 0\r\n});\r\nwin2.add(label2);\r\n\r\nvar tab1 = Ti.UI.createTab({\r\n window: win1,\r\n title: 'Blue'\r\n}),\r\ntab2 = Ti.UI.createTab({\r\n window: win2,\r\n title: 'Red'\r\n}),\r\ntabGroup = Ti.UI.createTabGroup({\r\n tabs: [tab1, tab2]\r\n});\r\ntabGroup.open();\r\n{code}\r\n\r\nTest Case 3-\r\n\r\n\r\n{code:java}\r\nvar win2 = Titanium.UI.createWindow({\r\n backgroundColor: 'red',\r\n title: 'Red Window',\r\n extendSafeArea:true\r\n});\r\n\r\nvar win1 = Titanium.UI.iOS.createNavigationWindow({\r\n window: win2\r\n});\r\n\r\nvar win3 = Titanium.UI.createWindow({\r\n backgroundColor: 'blue',\r\n title: 'Blue Window'\r\n});\r\n\r\nvar button = Titanium.UI.createButton({\r\n title: 'Open Blue Window',\r\n bottom:0\r\n});\r\nbutton.addEventListener('click', function(){\r\n win1.openWindow(win3, {animated:true});\r\n});\r\n\r\nwin2.add(button);\r\nvar button2 = Titanium.UI.createButton({\r\n title: 'Close Blue Window',\r\n bottom:0\r\n});\r\nbutton2.addEventListener('click', function(){\r\n win1.closeWindow(win3, {animated:false}); //win3.close() will also work!!\r\n});\r\n\r\nwin3.add(button2);\r\nwin1.open();\r\n{code}\r\n\r\nTest case 4:\r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff',\r\n extendSafeArea:false\r\n});\r\n\r\nvar btn1 = Ti.UI.createButton({\r\n top:50,\r\n\r\n title: 'Replace with button 4'\r\n});\r\n\r\nbtn1.addEventListener('click', function() {\r\n Ti.API.info('Replaced with button 4!');\r\n win.replaceAt({\r\n 'position':0,\r\n 'view':btn4\r\n });\r\n});\r\n\r\nvar btn2 = Ti.UI.createButton({\r\n top: 100,\r\n title: 'Remove'\r\n});\r\n\r\nbtn2.addEventListener('click', function() {\r\n Ti.API.info('Remove button removed!');\r\n win.remove(btn2);\r\n});\r\n\r\nvar btn3 = Ti.UI.createButton({\r\n top: 150,\r\n\r\n title: 'Remove all'\r\n});\r\n\r\nbtn3.addEventListener('click', function() {\r\n Ti.API.info('All buttons removed!');\r\n win.removeAllChildren(win);\r\n});\r\n\r\nvar btn4 = Ti.UI.createButton({\r\n top:200,\r\n title: 'Button 4'\r\n});\r\n\r\nbtn4.addEventListener('click', function() {\r\n Ti.API.info('Hello world!');\r\n});\r\n\r\nwin.add(btn1);\r\nwin.add(btn2)\r\nwin.add(btn3);\r\nwin.open();\r\n{code}", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-09-23T19:21:50.000+0000", "updated": "2017-09-29T07:53:12.000+0000" }, { "id": "428554", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (6_3_X) : https://github.com/appcelerator/titanium_mobile/pull/9485", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-09-28T04:06:49.000+0000", "updated": "2017-09-28T04:06:49.000+0000" }, { "id": "428603", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Putting ticket back in progress as there are some critical issues that need to be addressed before:\r\n# When placing a plain view into a window, it does not extend the status-bar anymore (not 100 % sure this is a valid issue with this PR as the status-bar probably also is a safe-area, but it's definitely a breaking change that would need to go into 7.0.0)\r\n# When testing my [Studentenfutter sample-app|https://github.com/hansemannn/studentenfutter-app], the app works initially but then freezes after opening a window a few times.\r\n\r\nCode for (1):\r\n{code:js}\r\nvar win = Ti.UI.createWindow();\r\nwin.add(Ti.UI.createView({ backgroundColor: 'red' }));\r\nwin.open();\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-09-29T10:52:59.000+0000", "updated": "2017-09-29T10:52:59.000+0000" }, { "id": "428617", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "body": "Also I am curious about the extendSafeArea property. The tests show this being set at the time a window is created. But, as per the initial requests in this ticket, can this property be updated later? After window creation? \r\n\r\nFor example I can change the window title whenever I like. Can I do the same with extendSafeArea?", "updateAuthor": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-09-30T11:44:55.000+0000", "updated": "2017-09-30T11:47:27.000+0000" }, { "id": "428622", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~hknoechel] Status bar is not part of safe area, if we see that in native iOS app. Actually our window by default have clearColor. So status bar is not visible . If we set backgroundColor of window, status bar will visible.\r\n\r\n[~mdelmarter] This property can be set at creation of window only. And it is per window.", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-10-02T03:11:14.000+0000", "updated": "2017-10-02T03:11:14.000+0000" }, { "id": "428732", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Let's expose safeAreaView to developer. When developer wants to modify the layout of safeAreaView other than default safe area, they can. If extendSafeArea is false it will return the TIViewProxy if true will return nil. \r\n\r\nAnd rather making default value of extendSafeArea false, we should make it true. Reason is if someone really need to use this then only will pass it in window and will be aware of the behavior of safe area. If we make default to false , safe area will come in picture and may be developer will not be aware of the same.\r\n\r\n[~hknoechel] What you think?\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-10-05T07:52:38.000+0000", "updated": "2017-10-05T08:17:05.000+0000" }, { "id": "428737", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I like the general idea to habe safe-area specific views as well (to be more flexible) and I'd love to hear more feedback from [~mdelmarter] if possible!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-10-05T12:36:17.000+0000", "updated": "2017-10-05T12:36:17.000+0000" }, { "id": "428939", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Test Cases for split window -\r\n\r\nTest Case 5.\r\n\r\n{code:java}\r\nvar detail = Ti.UI.createWindow({backgroundColor: 'white',extendSafeArea:false});\r\nvar label1 = Ti.UI.createLabel({text: 'Detail View', left:0, top:0});\r\ndetail.add(label1);\r\nvar label3 = Ti.UI.createLabel({text: 'Detail View 1', right:0, bottom:0});\r\ndetail.add(label3);\r\n\r\nvar detailNav = Ti.UI.iOS.createNavigationWindow({window: detail});\r\n\r\nvar master = Ti.UI.createWindow({backgroundColor: 'gray', extendSafeArea:false});\r\nvar label2 = Ti.UI.createLabel({text: 'Master View', left:0, top:0});\r\nmaster.add(label2);\r\n\r\nvar label4 = Ti.UI.createLabel({text: 'Master View', bottom:0, right:0});\r\n\r\nmaster.add(label4);\r\n\r\nvar masterNav = Ti.UI.iOS.createNavigationWindow({window: master});\r\n\r\nvar splitWin = Ti.UI.iOS.createSplitWindow({\r\n detailView: detailNav,\r\n masterView: masterNav,\r\n showMasterInPortrait:true\r\n});\r\nsplitWin.open();\r\n\r\n{code}\r\n\r\nTest Case 6 -\r\n{code:java}\r\nvar label1 = Ti.UI.createLabel({text: 'Detail View', left:0, top:0});\r\ndetail.add(label1);\r\nvar label3 = Ti.UI.createLabel({text: 'Detail View 1', right:0, bottom:0});\r\ndetail.add(lvar detail = Ti.UI.createWindow({backgroundColor: 'white',extendSafeArea:false});\r\nabel3);\r\n\r\nvar master = Ti.UI.createWindow({backgroundColor: 'gray', extendSafeArea:false});\r\nvar label2 = Ti.UI.createLabel({text: 'Master View', left:0, top:0});\r\nmaster.add(label2);\r\n\r\nvar label4 = Ti.UI.createLabel({text: 'Master View 1', bottom:0, right:0});\r\n\r\nmaster.add(label4);\r\n\r\nvar splitWin = Ti.UI.iOS.createSplitWindow({\r\n detailView: detail,\r\n masterView: master,\r\n showMasterInPortrait:true\r\n});\r\nsplitWin.open();\r\n{code}\r\n\r\nTest Case 7 -\r\n\r\n{code:java}\r\nvar win1 = Ti.UI.createWindow({\r\n backgroundColor: 'blue',\r\n title: 'Blue',\r\n extendSafeArea:false\r\n});\r\nvar label1 = Ti.UI.createLabel({\r\n text: 'I am a blue window.',\r\n top: 0,\r\n left: 0\r\n});\r\nwin1.add(label1);\r\n\r\nvar win2 = Ti.UI.createWindow({\r\n backgroundColor: 'red',\r\n title: 'Red',\r\n extendSafeArea:false\r\n});\r\nvar label2 = Ti.UI.createLabel({\r\n text: 'I am a red window.',\r\n bottom: 0,\r\n right: 0\r\n});\r\nwin2.add(label2);\r\n\r\nvar tab1 = Ti.UI.createTab({\r\n window: win1,\r\n title: 'Blue'\r\n}),\r\ntab2 = Ti.UI.createTab({\r\n window: win2,\r\n title: 'Red'\r\n}),\r\ntabGroup = Ti.UI.createTabGroup({\r\n tabs: [tab1, tab2]\r\n});\r\n\r\nvar master = Ti.UI.createWindow({\r\n backgroundColor: 'gray',\r\n extendSafeArea:false\r\n });\r\nvar label3 = Ti.UI.createLabel({\r\n text: 'Master View', \r\n left:0, \r\n top:0\r\n});\r\nmaster.add(label3);\r\nvar label4 = Ti.UI.createLabel({\r\n text: 'Master View', \r\n bottom:0, \r\n right:0\r\n});\r\nmaster.add(label4);\r\n\r\nvar masterNav = Ti.UI.iOS.createNavigationWindow({\r\n window: master\r\n});\r\n\r\nvar splitWin = Ti.UI.iOS.createSplitWindow({\r\n detailView: tabGroup,\r\n masterView: masterNav,\r\n showMasterInPortrait:true,\r\n});\r\nsplitWin.open();\r\n{code}\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-10-11T11:30:08.000+0000", "updated": "2017-10-11T11:30:08.000+0000" }, { "id": "430569", "author": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR on master merged.", "updateAuthor": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-11-14T00:28:28.000+0000", "updated": "2017-11-14T00:28:28.000+0000" }, { "id": "430622", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified in SDK builds 6.3.0.GA & 7.0.0.v20171114134144", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-11-14T23:20:23.000+0000", "updated": "2017-11-14T23:20:23.000+0000" }, { "id": "430731", "author": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "body": "Hey guys - just wanted to acknowledge the work done here. Sorry I didn't reply earlier, life has thrown some unexpected curveballs lately. I have been updating my app for iPhone X support and am very pleased with the results. All working well. Thanks again.", "updateAuthor": { "name": "mdelmarter", "key": "mdelmarter", "displayName": "Matthew Delmarter", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2017-11-15T20:14:14.000+0000", "updated": "2017-11-15T20:14:14.000+0000" } ], "maxResults": 17, "total": 17, "startAt": 0 } } }