{ "id": "172166", "key": "TIMOB-26385", "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": [], "resolution": null, "resolutiondate": null, "created": "2018-09-04T06:11:44.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [ "eventlistener", "ios-11", "screen", "security" ], "versions": [], "issuelinks": [], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-09-12T10:06:52.000+0000", "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" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "iOS 11 has introduced the new built-in screen recording feature. While this is a great and useful feature it is also a security threat to confidential content, passwords and codes etc. iOS offers a notification `UIScreenCapturedDidChangeNotification` to observe when screen recording status changes. Our client require this functionality immediately but I was not able to find any solution for this in Titanium (except Hyperloop of course). Please expose this functionality in Titanium SDK at highest priority. Thanks.\r\n\r\nHelful links:\r\n[Official Apple Docs|https://developer.apple.com/documentation/uikit/uiscreen]\r\n[https://medium.com/@abhimuralidharan/detecting-screen-capturing-in-ios-11-cca15881c785|https://medium.com/@abhimuralidharan/detecting-screen-capturing-in-ios-11-cca15881c785]\r\n[StackOverFlow|https://stackoverflow.com/questions/46217459/how-to-understand-if-device-screen-is-being-recorded-in-ios-11/46218452]", "attachment": [], "flagged": false, "summary": "iOS 11 Detect screen recording ", "creator": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "subtasks": [], "reporter": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "environment": null, "comment": { "comments": [ { "id": "441292", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, Thanks for the ticket. As this can be performed through hyperloop. I believe we are not planning on this in near future. But, our engineers will look into it. Thanks.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2018-09-04T09:13:43.000+0000", "updated": "2018-09-04T09:13:43.000+0000" }, { "id": "441293", "author": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "body": "@SharifAbuDarda Does it mean that now Titanium SDK will no more have any new features as almost all of new features can be implemented using hyperloop even for small things like this one :(", "updateAuthor": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "created": "2018-09-04T09:32:38.000+0000", "updated": "2018-09-04T09:32:38.000+0000" }, { "id": "441334", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "[~appsol], I apologize for the misunderstanding. I meant since this can be achieved through Hyperloop. We are not planning to get on this right away. We will keep the ticket open for now. Thanks.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2018-09-05T07:47:06.000+0000", "updated": "2018-09-05T07:47:06.000+0000" }, { "id": "441363", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~appsol] The whole SDK is open source [here|https://github.com/appcelerator/titanium_mobile] and accepts contributions at any time. If you are in a rush, feel free to extend it from there and we can review it accordingly. Thx! Hyperloop quick solution:\r\n{code:js}\r\nvar UIScreen = require('UIKit/UIScreen');\r\nvar isCapturing = UIScreen.mainScreen.isCaptured()\r\n{code}\r\nThat's it. You can set a repeatable interval to check for this, just like in the example that you had.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-09-05T19:55:36.000+0000", "updated": "2018-09-05T19:59:42.000+0000" }, { "id": "441405", "author": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "body": "@hknoechel Thanks for sharing the suggestion. Appreciated. Could you please also tell how to add observer for {code:java}UIScreenCapturedDidChangeNotification{code} I have tried but don't know what to pass for the \"observer (self)\" and \"selector\" parameters. This is the native code:\r\n\r\n{code:objc}\r\n[[NSNotificationCenter defaultCenter] addObserver:self\r\n selector:@selector(handleScreenCaptureChange)\r\n name:UIScreenCapturedDidChangeNotification object:nil];\r\n\r\n-(void)handleScreenCaptureChange\r\n{\r\n if (@available(iOS 11.0, *)) {\r\n BOOL isCaptured = [[UIScreen mainScreen] isCaptured];\r\n if (isCaptured && !isMainScreenMirrored) {\r\n\r\n //Display Alert : \"Please turn off screen recording and play again.\"\r\n\r\n }\r\n }\r\n}\r\n{code}\r\n", "updateAuthor": { "name": "appsol", "key": "appsol", "displayName": "Muhammad Qasim", "active": true, "timeZone": "Asia/Karachi" }, "created": "2018-09-07T09:52:59.000+0000", "updated": "2018-09-07T09:56:59.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }