{ "id": "175178", "key": "TIMOB-27976", "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": "21051", "description": "", "name": "Release 9.2.0", "archived": false, "released": true, "releaseDate": "2020-09-23" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-09-16T19:34:40.000+0000", "created": "2020-06-23T18:36:24.000+0000", "epic": { "id": 175154, "key": "TIMOB-27964", "name": "Support iOS 14", "summary": "iOS: Support iOS 14 and Xcode 12", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [ "geolocation" ], "versions": [], "issuelinks": [ { "id": "58705", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "175512", "key": "TIMOB-28114", "fields": { "summary": "TiAPI: Geolocation Parity", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } } ], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-09-16T19:34:40.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": "Apple has exposed new APIs CoreLocation framework e.g. https://developer.apple.com/documentation/corelocation/claccuracyauthorization?changes=latest_major\r\nhttps://developer.apple.com/documentation/corelocation/cllocationmanager/3600217-requesttemporaryfullaccuracyauth?changes=latest_major\r\nhttps://developer.apple.com/documentation/corelocation/cllocationmanager/3600216-requesttemporaryfullaccuracyauth?changes=latest_major.\r\nExpose new APIs in SDK to use .\r\n\r\nNew APIs- \r\nConstants - \r\n{code:java}\r\nTi.Geolocation.ACCURACY_AUTHORIZATION_FULL \r\nTi.Geolocation.ACCURACY_AUTHORIZATION_REDUCED\r\n{code}\r\n\r\nProperty (read-only)-\r\n\r\n{code:java}\r\nTi.Geolocation.locationAccuracyAuthorization\r\n{code}\r\n\r\nfunction -\r\n\r\n{code:java}\r\nTi.Geolocation.requestTemporaryFullAccuracyAuthorization('purposekey1', callback);\r\n{code}\r\n", "attachment": [ { "id": "67530", "filename": "iOS14-request-full-accurracy.png", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-09-09T20:57:33.000+0000", "size": 476512, "mimeType": "image/png" }, { "id": "67529", "filename": "iOS14-request-permission.png", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-09-09T20:57:29.000+0000", "size": 531339, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS 14: Expose API to use Core Location AccuracyAuthorization", "creator": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1202, "state": "closed", "name": "2020 Sprint 15", "startDate": "2020-07-20T22:16:05.601Z", "endDate": "2020-07-31T22:16:00.000Z", "completeDate": "2020-08-03T20:27:12.585Z", "originBoardId": 114 }, { "id": 1203, "state": "closed", "name": "2020 Sprint 16", "startDate": "2020-08-03T20:57:55.114Z", "endDate": "2020-08-14T20:57:00.000Z", "completeDate": "2020-08-14T15:19:51.647Z", "originBoardId": 114 }, { "id": 1204, "state": "closed", "name": "2020 Sprint 17", "startDate": "2020-08-17T15:48:00.000Z", "endDate": "2020-08-28T15:48:00.000Z", "completeDate": "2020-08-31T15:36:28.040Z", "originBoardId": 114 }, { "id": 1205, "state": "closed", "name": "2020 Sprint 18", "startDate": "2020-08-31T15:45:10.220Z", "endDate": "2020-09-11T15:45:00.000Z", "completeDate": "2020-09-11T19:56:20.674Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "456043", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Test Case -\r\n Steps - \r\n 1. Create app. Add key 'purposekey1' in tiapp.xml. Follow doc to add key.\r\n 2. Run the app. On launch it should show prompt to ask location access permission with map.\r\n 3. If, on map there is precise 'on' (which means app has full accuracy authorization). Click it and make it off.\r\n 4. Give permission to location by clicking on appropriate option.\r\n 5. Click on button 'Log Constants'. It should log proper values.\r\n 6. Click on button 'Get accuracy authorization'. It should show alert 'accuracy authorization is reduced'.\r\n7. Click on button 'Request full accuracy'. It should show prompt. On click of prompt it should show proper alert.\r\n8. Try without adding key 'purposekey1' in tiapp.xml . On click of 'Request full accuracy' , it should show proper error.\r\n9. Try with precise 'on' in step 3 (need to delete app first). On click of 'Request full accuracy' , it should show alert that 'App is already authorized for full accuracy' \r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n\tlayout: 'vertical',\r\n\tbackgroundColor: 'white' \r\n});\r\n \r\nvar button1 = Ti.UI.createButton({\r\n\ttop: 100,\r\n\ttitle: 'Log constants'\r\n});\r\n \r\nbutton1.addEventListener('click', function(e){\r\n\tTi.API.info('ACCURACY_AUTHORIZATION_FULL is ' \r\n\t\t+Ti.Geolocation.ACCURACY_AUTHORIZATION_FULL);\r\n \r\n\tTi.API.info('ACCURACY_AUTHORIZATION_REDUCED is ' \r\n\t\t+Ti.Geolocation.ACCURACY_AUTHORIZATION_REDUCED);\r\n});\r\n \r\nvar button2 = Ti.UI.createButton({\r\n\ttop: 50,\r\n\ttitle: 'Get accuracy authorization'\r\n});\r\n \r\nbutton2.addEventListener('click', function(e){\r\n\tvar accuracy = Ti.Geolocation.locationAccuracyAuthorization;\r\n \r\n\tif (accuracy == Ti.Geolocation.ACCURACY_AUTHORIZATION_FULL) {\r\n\t\talert('accuracy authorization is full'); \r\n\t} else {\r\n\t\talert('accuracy authorization is reduced'); \r\n\t}\r\n});\r\n \r\nvar button3 = Ti.UI.createButton({\r\n\ttop: 50,\r\n\ttitle: 'Request full accuracy'\r\n});\r\n \r\nbutton3.addEventListener('click', function(e){\r\n\tvar accuracy = Ti.Geolocation.locationAccuracyAuthorization;\r\n \r\n\tif (accuracy != Ti.Geolocation.ACCURACY_AUTHORIZATION_FULL) {\r\n\t\tTi.Geolocation.requestTemporaryFullAccuracyAuthorization('purposekey1', function(e){\r\n\t\t\tif (e.success) {\r\n\t\t\t\tif (e.accuracyAuthorization == Ti.Geolocation.ACCURACY_AUTHORIZATION_FULL) {\r\n\t\t\t\t\talert('App granted full accuracy authorization');\r\n\t\t\t\t} else {\r\n\t\t\t\t\talert('App denied full accuracy authorization');\t\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tTi.API.info('Error in authorization is ', e.error);\r\n\t\t\t\talert('accuracy authorization failed. See log.');\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\talert('App is already authorized for full accuracy');\r\n\t}\r\n});\r\n \r\nwin.add(button1);\r\nwin.add(button2);\r\nwin.add(button3);\r\n \r\n \r\nTi.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH;\r\n \r\nfunction getLocation() {\r\n Ti.Geolocation.addEventListener('location', function(e) {\r\n Ti.API.info(JSON.stringify(e, null, 2));\r\n });\r\n}\r\n \r\nwin.addEventListener('open', function() {\r\n if (Ti.Geolocation.hasLocationPermissions()) {\r\n \t\tgetLocation();\r\n } else {\r\n Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function(e) {\r\n if (e.success) {\r\n\t\t getLocation();\r\n\t\t } else {\r\n alert('could not obtain location permissions');\r\n }\r\n });\r\n }\r\n});\r\n \r\nwin.open();\r\n{code}\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-10T22:59:53.000+0000", "updated": "2020-07-28T00:49:35.000+0000" }, { "id": "456044", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR - https://github.com/appcelerator/titanium_mobile/pull/11813", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-10T23:37:57.000+0000", "updated": "2020-07-14T22:46:44.000+0000" }, { "id": "456684", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed\r\nWaiting for Jenkins build", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-09-02T00:24:44.000+0000", "updated": "2020-09-02T00:24:44.000+0000" }, { "id": "456918", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified on:\r\nMac OS: 10.15.4\r\nSDK: 9.2.0.v20200915123928, 9.3.0.v20200915132757\r\nAppc CLI: 8.1.1\r\nJDK: 11.0.4\r\nNode: 10.17.0\r\nStudio: 6.0.0.202005141803\r\nXcode: 12.0 GM\r\niPhone 7Plus(v14.0 GM)", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-09-16T19:34:40.000+0000", "updated": "2020-09-16T19:34:40.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }