{ "id": "174159", "key": "TIMOB-27419", "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": "20884", "name": "Release 8.2.1", "archived": false, "released": true, "releaseDate": "2019-10-25" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-10-08T22:15:48.000+0000", "created": "2019-09-22T23:06:08.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "engSchedule", "ios" ], "versions": [], "issuelinks": [], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-10-08T08:18: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": "Apple have added a new entitlement com.apple.developer.contacts.notes which allows apps to access the notes field of the contact db. The new entitlement is on a per app basis with developers required to put their case to Apple to gain it.\r\n\r\nTitanium requests CNContactNoteKey as part of the Ti.Contacts.getAllPeople method. This triggers a CNErrorDomain error 102.\r\n\r\nAny app compiled for iOS 13 without this entitlement will not be able to use the Ti.Contacts module for anything; regardless of needing the notes field.\r\n\r\nTo test create an empty project with the following in tiapp.xml\r\n\r\n NSContactsUsageDescription\r\n Contacts test\r\n\r\nAdd the following to alloy.js\r\nvar people = Ti.Contacts.getAllPeople();\r\n\r\nerror in console\r\n\r\n\r\n\r\n", "attachment": [], "flagged": false, "summary": "Ti.Contacts.getAllPeople() fails on iOS 13", "creator": { "name": "nickkemp", "key": "nickkemp", "displayName": "Nick Kemp", "active": true, "timeZone": "Pacific/Auckland" }, "subtasks": [], "reporter": { "name": "nickkemp", "key": "nickkemp", "displayName": "Nick Kemp", "active": true, "timeZone": "Pacific/Auckland" }, "environment": "SDK 8.2.0.GA\r\niOS 13", "closedSprints": [ { "id": 1165, "state": "closed", "name": "2019 Sprint 20", "startDate": "2019-09-23T15:38:43.949Z", "endDate": "2019-10-06T15:38:00.000Z", "completeDate": "2019-10-07T18:33:11.953Z", "originBoardId": 114 }, { "id": 1168, "state": "closed", "name": "2019 Sprint 21", "startDate": "2019-10-07T18:35:57.052Z", "endDate": "2019-10-20T18:35:00.000Z", "completeDate": "2019-10-21T15:38:00.182Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "451563", "author": { "name": "nickkemp", "key": "nickkemp", "displayName": "Nick Kemp", "active": true, "timeZone": "Pacific/Auckland" }, "body": "I have tested removing references to CNContactNoteKey on 8_2_X branch and can confirm without this key everything is fine.\r\n\r\nI guess you will need to come up with a way to let users request access with/without the notes field on iOS.", "updateAuthor": { "name": "nickkemp", "key": "nickkemp", "displayName": "Nick Kemp", "active": true, "timeZone": "Pacific/Auckland" }, "created": "2019-09-22T23:39:32.000+0000", "updated": "2019-09-22T23:39:32.000+0000" }, { "id": "451631", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~nickkemp] Thanks for raising the issue and detailed investigation.\r\n\r\nI think we can introduce a new property \"Ti.Contact.includeNote\" which need to be set before other API calls on Ti.Contact.\r\n\r\nIf one do not need 'note', just set \r\nTi.Contact.includeNote = false;\r\n\r\nDefault value of Ti.Contact.includeNote will be 'true' to avoid breaking change. From next major release we'll make default value 'false'.\r\n\r\nLet me know if you have any other thoughts.\r\nThanks!", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-26T00:32:50.000+0000", "updated": "2019-09-26T00:32:50.000+0000" }, { "id": "451671", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master) - https://github.com/appcelerator/titanium_mobile/pull/11247\r\nPR (8_2_X) - https://github.com/appcelerator/titanium_mobile/pull/11248\r\n\r\nTest Case - \r\n\r\n{code:java}\r\nTi.Contacts.includeNote = false;\r\nvar people = Ti.Contacts.getAllPeople();\r\n{code}\r\n\r\nRun above test case on iOS 13, it should not log any error message in console.\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-09-27T21:17:39.000+0000", "updated": "2019-09-27T21:17:39.000+0000" }, { "id": "451867", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed\r\nFetching of contacts works without error when Ti.Contacts.includeNote is set to false.", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-04T22:44:56.000+0000", "updated": "2019-10-04T22:44:56.000+0000" }, { "id": "451868", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Waiting for jenkins build on 8_2_X to merge", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-04T22:45:32.000+0000", "updated": "2019-10-04T22:45:32.000+0000" }, { "id": "451900", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "Merged to master and 8_2_X", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-10-08T14:25:56.000+0000", "updated": "2019-10-08T14:25:56.000+0000" }, { "id": "451909", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified On:\r\nMac OS: 10.14.5\r\nSDK: 8.2.1.v20191008121020, 8.3.0.v20191008081818\r\nAppc CLI: 7.1.1\r\nJDK: 1.8.0_162\r\nNode: 10.5.0\r\nStudio: 5.1.4.201909061933\r\nXcode: 11.0\r\niOS Device: iPhone X(13.0)", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-08T22:15:48.000+0000", "updated": "2019-10-08T22:15:48.000+0000" } ], "maxResults": 8, "total": 8, "startAt": 0 } } }