{ "id": "155822", "key": "MOD-2211", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false }, "project": { "id": "10034", "key": "MOD", "name": "Appcelerator Modules", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "17610", "name": "Release 6.1.0", "archived": false, "released": true } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-12-28T18:23:24.000+0000", "created": "2016-03-18T10:14:06.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "VMWare", "iOS" ], "versions": [], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-02-14T18:09:05.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": "14565", "name": "TouchID" } ], "description": "In Touch Id module, users can login using Touch ID only but if add another alternative method using passcode in this module then users can log in easily. This login features already available in native code.\r\n\r\nSo customer request this features as a alternative login method.", "attachment": [], "flagged": false, "summary": "TouchId: Add alternative login method using passcode", "creator": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "subtasks": [], "reporter": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "environment": "TouchID module, Xcode 7.2.1\r\nTi SDK 5.2.0.GA\r\n", "closedSprints": [ { "id": 784, "state": "closed", "name": "2016 Sprint 26 SDK", "startDate": "2016-12-17T01:24:57.928Z", "endDate": "2016-12-31T01:24:00.000Z", "completeDate": "2017-01-03T02:15:01.548Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "380138", "author": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "body": "*Here is the exact use case:*\r\n\r\n- For all the iPhone users who have the Touch ID enable on their phone:\r\n- Whenever user launches the App, it should prompt the user for Touch ID.\r\n- If the Touch ID authentication fails after 'n' or 3 number of re-tries, we should have the user to enter his device passcode. ", "updateAuthor": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-03-18T19:59:22.000+0000", "updated": "2016-03-18T19:59:22.000+0000" }, { "id": "380139", "author": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "body": "*Customer Sample Code:*\r\n\r\n{code}\r\nTouchId.authenticate({\r\nreason : L(\"touchId.loginMessage\"),\r\ncallback : callback\r\n \r\n});\r\n\r\n//where callback is below function -\r\n \r\nfunction touchAuthCallback(obj) {\r\nlog.trace(\"[login] >> [touchAuthCallback] >> TouchId callback execution started...\");\r\n \r\nif (obj.error == undefined) {\r\nif (obj[\"success\"] === true) {\r\nlog.trace(\"[login] >> [touchAuthCallback] >> Calling doClick to initiate Login...\");\r\n \r\nsetTimeout(\r\nfunction() {\r\ndoClick();\r\n},\r\n200);\r\n}\r\n} else {\r\nlog.error(\"[login] >> [touchAuthCallback] >> err:\", obj.error);\r\n$.password.setValue(\"\");\r\nAlloy.Globals.touchIdOnResume = false ;\r\nAlloy.Globals.touchIdInAction = false ;\r\n \r\n}\r\n}\r\n\r\n{code}", "updateAuthor": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-03-18T20:01:57.000+0000", "updated": "2016-03-18T20:01:57.000+0000" }, { "id": "380140", "author": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "body": "*Related Post:*\r\n\r\nThis was proposed but not acceptable by customer https://gist.github.com/csemrm/df08876d2bf09fe4785a", "updateAuthor": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-03-18T20:05:01.000+0000", "updated": "2016-03-18T20:05:01.000+0000" }, { "id": "380181", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "As discussed on Flowdock, I'm pretty sure it's not exposed by iOS (for now). Anyway, if they can provide a native example that does it, we'd be able to solve that easily.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-20T12:06:19.000+0000", "updated": "2016-03-20T12:06:19.000+0000" }, { "id": "403894", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "I got something. More soon.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-12-28T14:57:32.000+0000", "updated": "2016-12-28T14:57:32.000+0000" }, { "id": "403897", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Fixed as part of TIMOB-20547. Example:\r\n\r\n{code:javascript}\r\n// Or: AUTHENTICATION_POLICY_BIOMETRICS for the default behavior\r\nTiTouchId.setAuthenticationPolicy(TiTouchId.AUTHENTICATION_POLICY_PASSCODE); \r\n\r\n// Check device support and authenticate like before ...\r\n{code}\r\n", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-12-28T18:23:24.000+0000", "updated": "2016-12-28T18:23:24.000+0000" }, { "id": "407042", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified that this works fine, tested with;\r\niPhone 7 (10.2)\r\nMacOS 10.11.6 (15G31)\r\nStudio 4.8.1.201612050850\r\nTi SDK 6.1.0.v20170213134957\r\nAppc NPM 4.2.8\r\nAppc CLI 6.2.0-12\r\nTi CLI 5.0.11\r\nAlloy 1.9.6\r\nArrow 1.10.2\r\nXcode 8.2 (8C38)\r\nNode v4.6.0\r\nJava 1.7.0_80", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-02-14T18:08:57.000+0000", "updated": "2017-02-14T18:08:57.000+0000" } ], "maxResults": 7, "total": 7, "startAt": 0 } } }