{ "id": "171750", "key": "TIMOB-26103", "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": "20183", "description": "", "name": "Release 7.4.0", "archived": false, "released": true, "releaseDate": "2018-09-17" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-07-30T05:35:53.000+0000", "created": "2018-06-06T03:55:00.000+0000", "epic": { "id": 170940, "key": "TIMOB-25708", "name": "Support iOS 12", "summary": "iOS: Support iOS 12 and Xcode 10", "color": { "key": "color_6" }, "done": false }, "priority": { "name": "Medium", "id": "3" }, "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2018-08-28T09:52:23.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": "iOS 12 adds a couple of cool API's to improve the default grouping of notifications, e.g. by using thread identifiers and category summaries. ", "attachment": [], "flagged": false, "summary": "iOS 12: Support grouped notifications", "creator": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "closedSprints": [ { "id": 1058, "state": "closed", "name": "2018 Sprint 16 SDK", "startDate": "2018-07-29T22:26:06.486Z", "endDate": "2018-08-12T22:26:00.000Z", "completeDate": "2018-08-13T17:38:16.757Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "438161", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/10091", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-06-06T04:47:16.000+0000", "updated": "2018-06-30T12:35:42.000+0000" }, { "id": "439580", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Demo-Code:\r\n{code:js}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff'\r\n});\r\n\r\nvar btn = Ti.UI.createButton({\r\n title: 'Schedule Notification'\r\n});\r\n\r\nbtn.addEventListener('click', function() {\r\n schedule('id_1', 'New Notification', 'Hey there!', new Date().getTime() + 3000);\r\n schedule('id_2', 'Another Notification', 'Aloooah!', new Date().getTime() + 4000);\r\n schedule('id_3', 'Anooooother Notification', 'Hola!', new Date().getTime() + 5000);\r\n schedule('id_4', 'One more okay?', 'Hello!', new Date().getTime() + 6000);\r\n schedule('id_5', 'This is the last one', 'Hallo!', new Date().getTime() + 7000);\r\n});\r\n\r\nwin.add(btn);\r\nwin.open();\r\n\r\nvar acceptAction = Ti.App.iOS.createUserNotificationAction({\r\n identifier: 'ACCEPT_IDENTIFIER',\r\n title: 'Accept',\r\n activationMode: Ti.App.iOS.USER_NOTIFICATION_ACTIVATION_MODE_FOREGROUND,\r\n destructive: false,\r\n authenticationRequired: true\r\n});\r\n \r\n// An action that does not open the app (background action)\r\nvar rejectAction = Ti.App.iOS.createUserNotificationAction({\r\n identifier: 'REJECT_IDENTIFIER',\r\n title: 'Reject',\r\n activationMode: Ti.App.iOS.USER_NOTIFICATION_ACTIVATION_MODE_BACKGROUND,\r\n destructive: true,\r\n authenticationRequired: false\r\n});\r\n \r\n // An action that does not open the app (background action), but lets the developer\r\n// type in a text (iOS 9+)\r\nvar respondAction = Ti.App.iOS.createUserNotificationAction({\r\n identifier: 'RESPOND_IDENTIFIER',\r\n title: 'Respond',\r\n activationMode: Ti.App.iOS.USER_NOTIFICATION_ACTIVATION_MODE_BACKGROUND,\r\n behavior: Ti.App.iOS.USER_NOTIFICATION_BEHAVIOR_TEXTINPUT, // or: Ti.App.iOS.USER_NOTIFICATION_BEHAVIOR_DEFAULT,\r\n authenticationRequired: false\r\n});\r\n \r\n// Create an example notification category\r\nvar downloadContent = Ti.App.iOS.createUserNotificationCategory({\r\n identifier: 'DOWNLOAD_CONTENT',\r\n actionsForDefaultContext: [acceptAction, rejectAction, respondAction]\r\n});\r\n\r\n// Register for user notifications and categories\r\nTi.App.iOS.registerUserNotificationSettings({\r\n types: [\r\n Ti.App.iOS.USER_NOTIFICATION_TYPE_ALERT\r\n ],\r\n categories: [downloadContent]\r\n});\r\n \r\n// Monitor notifications received while app is in the background\r\nTi.App.iOS.addEventListener('localnotificationaction', function(e) {\r\n alert('event: localnotificationaction');\r\n});\r\n\r\n// Validate notification settings\r\nTi.App.iOS.addEventListener('usernotificationsettings', function(e) {\r\n Ti.API.info('event: usernotificationsettings');\r\n})\r\n\r\n// Monitor notifications received while app is in the foreground\r\nTi.App.iOS.addEventListener('notification', function(e) {\r\n alert('event: notification');\r\n});\r\n\r\nfunction schedule(identifier, title, body, date) {\r\n Ti.App.iOS.scheduleLocalNotification({\r\n identifier: identifier,\r\n alertTitle: title,\r\n alertBody: body,\r\n summaryArgument: 'My Summary',\r\n summaryArgumentCount: 2,\r\n threadIdentifier: 'my_thread',\r\n date: date,\r\n category: 'DOWNLOAD_CONTENT'\r\n });\r\n}\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-07-28T16:15:12.000+0000", "updated": "2018-07-28T16:23:34.000+0000" }, { "id": "441094", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "cherry picked fix to 7_4_X branch: https://github.com/appcelerator/titanium_mobile/commit/c352cb8c01f14d43e4f79c743afcfaa6f9d8ff18", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2018-08-27T16:11:57.000+0000", "updated": "2018-08-27T16:11:57.000+0000" }, { "id": "441135", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "*Closing ticket.* Verified fix in SDK version: {{7.4.0.v20180827125633}} and {{7.5.0.v20180827102657.}}\r\n\r\n*Test Steps (FR Passed):*\r\n# Created a new titanium project\r\n# Added the code above in to the project\r\n# Ran the program ensuring newest beta of XCode is installed along with IOS 12. beta\r\n# Pressed {{schedule notification}}\r\n# Went to Home screen\r\n# Waited for the notifications to appear \r\n# Pulled down on the screen to view notifications and saw that they were grouped\r\n\r\n*Test Environment*\r\n{code:java}\r\nAPPC Studio: 5.1.0.201808080937\r\nAPPC CLI: 7.0.6-Master.5\r\niphone 6 simulator (12.0)\r\nOperating System Name: Mac OS High Sierra\r\nOperating System Version: 10.13.6\r\nNode.js Version: 8.9.1\r\nXcode 10.0 beta 6{code}\r\n", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-28T09:52:10.000+0000", "updated": "2018-08-28T09:52:10.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }