{"_id":"@bob.hardcoder/react-native-incoming-call","_rev":"5-a39cff363eafbd4545f777c3fdaaf3e6","name":"@bob.hardcoder/react-native-incoming-call","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@bob.hardcoder/react-native-incoming-call","version":"1.0.0","description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"keywords":["react-native","call-screen"],"author":{"name":"Bob Hardcoder"},"license":"ISC","bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"homepage":"https://github.com/iDubok/react-native-incoming-call#readme","peerDependencies":{"react":"^16.8.1","react-native":">=0.59.0-rc.0 <1.0.x"},"devDependencies":{"react":"^16.8.3","react-native":"^0.59.10"},"gitHead":"57844ee96d751bc387504c6a1bea114d2a62efb5","_id":"@bob.hardcoder/react-native-incoming-call@1.0.0","_nodeVersion":"14.15.0","_npmVersion":"7.8.0","dist":{"integrity":"sha512-fddpZ5YwDjWmBQ10YTh/NRzdpR4ci6GXOTphC6Gh8LVt0t6DbkG3nmnun8BkfvQCfMXnsCtwzx1Y9xs2tSE3ew==","shasum":"1e288973dc7cc6c96039679a626aa2553bc00283","tarball":"https://registry.npmjs.org/@bob.hardcoder/react-native-incoming-call/-/react-native-incoming-call-1.0.0.tgz","fileCount":20,"unpackedSize":190528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtCE/CRA9TVsSAnZWagAAGrIQAKQd1dsvacOMhtKMDySx\nSpX0ats0+MrTHBDcNsTvlt+SdeRE/mAJfCx54EnE1dWssR7TzsC6zXZ+satc\nSXQCccq60MXX6ja/+0tfD0XCHC8/G13v/w9UYXKHWQVYLRyewKh+Vm+sN3l3\ns+mquobBv6uiGmjJfwkBp/58LLQUJMcj+hUesPvR8czEtHBovK3EvcIReZ/3\nPT5ZYm07mhHXkvTnJRu/G4p6vKEjkC1yJ+qHSo/QNdQ0LoaLTQzmazeCloZm\npFzuOPrcknf/plCmxuq1F2hypkDjJ3/vc838cKvGYNhBZdqzgsvw/DQaXCti\nYrPky+5E5bdl4cDPMdql5+yY5pxcfvRbl4yUe47SxcfuF0XJRz9NUW4Q5O6f\n2Ay4Uzq1CiY1SPEDHJG3+oY++FiHptOpWQm9UeomBf44ufQJZgZdMD7ohFh3\ncCs4h7Lh1VREPep2LVbAa6aYLNH+GOwm63Vzb8Rt8BlOs6e6FRRIrlIFgayr\nitFWCBu9+KK8EK1DHLfrbIuXOWZ5cy/7FRMotp3fzegIIZEF4Lp+JOsuxB6r\nezcCl9K7rIlXQB0MjjxbZRqj9RwIWMGm8Ve18oJnSfT7IZQZ8GFuqIUYJTuk\ndE+gvjjvB/8Bza2mF73PR4dMG65c5LkFHAFEw447bBA2x/0GhT7UYVeZyUPc\nUCNt\r\n=8Usi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFQp8SkNd50b0w8h2DvJ+4dHosAWuCqFQ41tghoQt8yiAiARhzfl14mAF8nCe8cQ6e57erDty7J9D4YZ4fvxmO4B9Q=="}]},"_npmUser":{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"},"directories":{},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-incoming-call_1.0.0_1622417727087_0.8322861913837447"},"_hasShrinkwrap":false},"1.0.1":{"name":"@bob.hardcoder/react-native-incoming-call","version":"1.0.1","description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"keywords":["react-native","call-screen"],"author":{"name":"Bob Hardcoder"},"license":"ISC","bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"homepage":"https://github.com/iDubok/react-native-incoming-call#readme","peerDependencies":{"react":"^16.8.1","react-native":">=0.59.0-rc.0 <1.0.x"},"devDependencies":{"react":"^16.8.3","react-native":"^0.59.10"},"gitHead":"d9c64fb1a1d8debfe7dee45bd5b05cc943d155df","_id":"@bob.hardcoder/react-native-incoming-call@1.0.1","_nodeVersion":"14.15.0","_npmVersion":"7.8.0","dist":{"integrity":"sha512-NWrCCEVxG552Sq0lHYh0Z7urbnP4BGQnB+LZcRivZximtcQsWijpaCLdO+eQi4zUEuMLr7nbMaspCaxvXxVKkQ==","shasum":"8e2c2950744a7b809c1d1e8a67c8a938eb4241fc","tarball":"https://registry.npmjs.org/@bob.hardcoder/react-native-incoming-call/-/react-native-incoming-call-1.0.1.tgz","fileCount":20,"unpackedSize":190684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtCSRCRA9TVsSAnZWagAAgOwP/0qoZyvcEtcqgJW5tkL+\nUAzFpkt6U1SY+eAbpfo5bjhFd2cSweLQLiaDbpB/+IMKO2vhMDx14WewDCJF\n04pfCiPUGwwUNzHje+yaY2d/C8M0UeRshCF6WAF85o+sC2/MnUmHBQlgkAAS\np+UAqkJY1S5t0zZPZtcbwjuyA11hqfHy4Sd2I1NjMtO1MEyL0H/6cjQLRbPZ\n0SLtIrQQWtgNwmx4Xx1jBQLVuMJY/2FpO5KU6L4eDIpgkocJcciqjBHCMbSN\nNFz5UfWHyKvEkd1hlUjNIpL7yyEwFlXkdqi58Aiwnlli0S+9VDZX8ZW1G0FP\n2c/IlUEG+r1jvfc8i4owr8+CG0F7yEW1Rj8FuBGmn0XztIy4XQn7Zmbs/y0R\nDRzYPYbNEjzK5nnXcfK0kSSHNnCmbihIZXEvdE+nJhBWNwYrN65PsHQIwwLb\n3fobTZT1y/1L9y1glqT3i1wC3vCRe2ymLjjwEK38oZJtIteb3EF6auP1kbQR\ndoY80voJq/+w3UU5TtHyh6Fx6AaswVbWQGaru14CAggl+x9eFrD9w9+56Jp7\nRGWpVbR0aO58P17NsI72eeLkBSGpAGZ69+ajgZMEL5BfThZfSXiQ4NiyS00O\nGkEtPxSVxmhPdhXY+GuSHlPEEO2Qsn/84Xs9cUrZ/v1hEsYHlMtSgoqmM5V9\nEMq4\r\n=2+Wx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcSAi56LdnL5QeqQ7Oaz5/IsX1pRVhDRxTYb0Rgm1g9wIhAKfnZ6fpReNLTZ2JaPBQeuzyTvLcgOIgYSRBogaptR9K"}]},"_npmUser":{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"},"directories":{},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-incoming-call_1.0.1_1622418577415_0.3970363796018195"},"_hasShrinkwrap":false},"1.0.2":{"name":"@bob.hardcoder/react-native-incoming-call","version":"1.0.2","description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"keywords":["react-native","call-screen"],"author":{"name":"Bob Hardcoder","email":"bob.hardcoder@gmail.com"},"license":"MIT","licenseFilename":"LICENSE","bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"homepage":"https://github.com/iDubok/react-native-incoming-call#readme","peerDependencies":{"react":"^16.8.1","react-native":">=0.59.0-rc.0 <1.0.x"},"devDependencies":{"react":"^16.8.3","react-native":"^0.59.10"},"gitHead":"2c4a15a0c29014dddfa51dbb6923845bcfbb7a0e","_id":"@bob.hardcoder/react-native-incoming-call@1.0.2","_nodeVersion":"14.15.0","_npmVersion":"7.8.0","dist":{"integrity":"sha512-FmwsA52HYe40JYxR8knvmQu4OBe50uGRybe3lJRLsKyz6XeFXgwPghvag+sS0E+V38DJA4++Ltpb90GR7oBiKw==","shasum":"bdec589e58a96d8d11edda9b3883fc3826f1e1d1","tarball":"https://registry.npmjs.org/@bob.hardcoder/react-native-incoming-call/-/react-native-incoming-call-1.0.2.tgz","fileCount":20,"unpackedSize":190846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtCycCRA9TVsSAnZWagAANvsP/A5iRBRLSY1SVqzWQ3EY\nzo+ZQuf3QS12lHeqWQAlfWFIV1XTWb9cmUAUe5DgA4t9gGouRwUj2cpuQMdr\n4gjC/YxOmHagTZebQMOEy0LqeEXoWTE3cXu3naM6CDEc6P8bD/uNntcrqW2c\ny4DwHfskGqIAmX7sudM1noy0eAquQdSiG6SPDvXr1uc3Jy1eJbMY3Ucar8GY\n8/UsaCU9r7+FtwV9OLASSwppnw3UCugCvZWqDRwN8Vcnr9stfojaJUKG3g/S\nuZRljlYelp2SBgD3PaUDiZA39fnk+JYEzWTU2XUMFQeXrGwax2tLYHblSTup\nCLc8ZNwObxd3F8aiUaeuDY9akw+tpCz0cMuu9w7j1NmLMbjSXxPlKZrrWVbd\nz8JZmogPTg787K18KSHtv5N5xm3EXuCwZBYmnUoZ6fty/02Crc6Mv/IFo/9+\nWSPAzxTl9n824mZb5xKe5yDUC2AOVhL7asA/rojcb+BMh7h2zEXp2JKJ6PfO\nBSvsIM1MLgvc2LLRRysbzuIqBQS7z0n6AN5G0167WcscvfUzU3G+bGc/nfKr\nkZ6MyF8ahv+MsUjypLbHCDtFulHgdGdy3yG8R7/HBJehb8q0dq70r580TFPb\n44mrkXNseHD4iPjWjHPJSbAJDrE/+arKJuPsDP1ficb+C9Z7f2eIwh6iy2u7\nA6H8\r\n=aQ19\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8N6hxNMULxq1NqEn17jVYercTOR8qcmbfg61wmRzYuAIhALYfdJ7In+qhxuiwOY9//Dtugk0S7K3D1tH0EZFsMGjw"}]},"_npmUser":{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"},"directories":{},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-incoming-call_1.0.2_1622420635371_0.9899961703006677"},"_hasShrinkwrap":false},"1.0.3":{"name":"@bob.hardcoder/react-native-incoming-call","version":"1.0.3","description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"keywords":["react-native","call-screen"],"author":{"name":"Bob Hardcoder","email":"bob.hardcoder@gmail.com"},"license":"MIT","licenseFilename":"LICENSE","bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"homepage":"https://github.com/iDubok/react-native-incoming-call#readme","peerDependencies":{"react":"^16.8.1","react-native":">=0.59.0-rc.0 <1.0.x"},"devDependencies":{"react":"^16.8.3","react-native":"^0.59.10"},"gitHead":"c317132402cdeab11737f97e4d3f757411243348","_id":"@bob.hardcoder/react-native-incoming-call@1.0.3","_nodeVersion":"14.15.0","_npmVersion":"7.8.0","dist":{"integrity":"sha512-nU+WFw7WEMgSKCmPtLXZan/f90TllwWfPEcA2K131QFjC1kONIIFG/bHmTN2dI7dqMqsVn6wZVxUDERTtr9z9g==","shasum":"a4f365a54e35b721515cf4f3032ac904a777efdb","tarball":"https://registry.npmjs.org/@bob.hardcoder/react-native-incoming-call/-/react-native-incoming-call-1.0.3.tgz","fileCount":20,"unpackedSize":146665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtvUnCRA9TVsSAnZWagAAgJIP/RS+I7XOZwFUy5rvZZ14\n11PBJKBqtOra+gZfjRsuJ1uBzNRr06pszW63Df02OrYiNsGw5fdmXTvPAH5u\nFjpMkKCzfeJuPlsl8Oz6rgc3HL+HUziX2ggXNPCSy61V7OzkavbtlsgS4Mfg\nkwkxY2qJiSXS+pwf9uzZ8p0951BNeqPm6T+xnG/BGMACLqs7uqOnoRKcFH3n\nJPl8sYKUMW0+Kbq5OnVd26sIWLrmtsKcS/ZEejsSe1anwrlwPsSG9yq+VvO3\n+xi9Cz8pEyLtrskEKp2y5YNLXd0gp+VOVoKnhE0n933nFJmYv/yrEeGpVHGw\nRBJwcYJZv3+21HAG2k2dBMqRhrx4uxLhqjJO9++Qq/48qgnWq86wVATysBJs\nN/mozqKKxs5dHyhlzGP3YzQuKPA0L9J+eyXauftC+kTlv/AczWkqNmwzT/Xt\nVpg7tWJbhjsCl/viYPAAFySNbN+qfrtYQMoYwTGDHKljF2iyMRnl1xo4OpBz\nukfin0dN7Z7Zj8eOEugB7CZSxFwGSxc0np29R5/BUQCbyJ7ANYLSvEcf4m0Z\nerVX6sQoZ0FS3naLTyPJ7ftmQFvUPzGdYaajGNXxkyCUwczo5MreX1E2k68i\nAQAzQ0jKXl2rL2Pgd27R6eTmwYgP0St9ydlAVNgha3YF8PXhY0Q0inOj9Cl1\nOhCC\r\n=39zQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCifdpQqfc2O6sTiLpNPNNs0x7SkwqIR3oyMurG9JyDKgIgZtZZjtHmgiOyJEiqC+6iBLTwfh/BrhMN0mSjhnwy2fI="}]},"_npmUser":{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"},"directories":{},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-incoming-call_1.0.3_1622603046969_0.2295308311577069"},"_hasShrinkwrap":false},"1.0.4":{"name":"@bob.hardcoder/react-native-incoming-call","version":"1.0.4","description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"keywords":["react-native","call-screen"],"author":{"name":"Bob Hardcoder","email":"bob.hardcoder@gmail.com"},"license":"MIT","licenseFilename":"LICENSE","bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"homepage":"https://github.com/iDubok/react-native-incoming-call#readme","peerDependencies":{"react":"^16.8.1","react-native":">=0.59.0-rc.0 <1.0.x"},"devDependencies":{"react":"^16.8.3","react-native":"^0.59.10"},"_id":"@bob.hardcoder/react-native-incoming-call@1.0.4","gitHead":"0a9a7d77fe28a5db29420451058f36ab4dff4217","_nodeVersion":"18.17.1","_npmVersion":"9.8.1","dist":{"integrity":"sha512-hq3wqy0EMmhLIm96uGhOJwwJdW4EGnqlEekKml7f+q5bP+UuakkKqPcrhIwKp10zFKoxrzWep+1+oXy6Sp65DA==","shasum":"2cde8c986b5c18b67d5fecbf3008802ba248c9cd","tarball":"https://registry.npmjs.org/@bob.hardcoder/react-native-incoming-call/-/react-native-incoming-call-1.0.4.tgz","fileCount":34,"unpackedSize":4476203,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDgJtJxcvqDRz8nYxtqU1AYn4d8oxe+5CW2Pv2RQVEt2AiEA7ahqApA2ghKkwOHS/U43/9BWwTbY1NpvvdweTkEHVyo="}]},"_npmUser":{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"},"directories":{},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/react-native-incoming-call_1.0.4_1699908624997_0.4731527021079167"},"_hasShrinkwrap":false}},"time":{"created":"2021-05-30T23:35:27.042Z","1.0.0":"2021-05-30T23:35:27.262Z","modified":"2023-11-13T20:50:25.451Z","1.0.1":"2021-05-30T23:49:37.542Z","1.0.2":"2021-05-31T00:23:55.661Z","1.0.3":"2021-06-02T03:04:07.120Z","1.0.4":"2023-11-13T20:50:25.275Z"},"maintainers":[{"name":"bob.hardcoder","email":"bob.hardcoder@gmail.com"}],"description":"Fork of improved version of react-native-incoming-call by bkdev98 and icc-guerrero","homepage":"https://github.com/iDubok/react-native-incoming-call#readme","keywords":["react-native","call-screen"],"repository":{"type":"git","url":"git+https://github.com/iDubok/react-native-incoming-call.git"},"author":{"name":"Bob Hardcoder","email":"bob.hardcoder@gmail.com"},"bugs":{"url":"https://github.com/iDubok/react-native-incoming-call/issues"},"license":"MIT","readme":"# RN Incoming Call Version 2\r\n\r\n> React Native module to display custom incoming call activity, best result when using with firebase background messaging. Only for Android since iOS we have VoIP.\r\n\r\n## Fork note\r\nIt's a fork of the most supported version of react-native-incoming-call originally created by [bkdev98](https://github.com/bkdev98/react-native-incoming-call) and improved by [icc-guerrero](https://github.com/UN-ICC/react-native-incoming-call) created to introduce some customizations and make the latest version available on npm since the author has no enough time to release the changes. Later, when it is good enough, it could be merged into the original repo.\r\n\r\nYes I heard you could use **self managed ConnectionService** thing. But since I'm not an Android expert, this is a solution I found acceptable.\r\n\r\nYou could also wait for [this feature request](https://github.com/react-native-webrtc/react-native-callkeep/issues/43) from `react-native-callkeep` to be resolved and have an easier life.\r\n\r\n<img width=\"400\" src=\"https://github.com/bkdev98/react-native-incoming-call/raw/master/incoming-call.jpg\">\r\n\r\n## Version 2 Breaking Changes\r\n\r\nHello there! It's been a while since I first public version 1 of this library, which contains some bugs that I don't have much time to fix.\r\n\r\nLuckily I got a client project which needs this feature again and now I have time to improve it and make sure all major features work. So here is most of it I guess:\r\n\r\n- [x] More generic incoming call UI.\r\n\r\n- [x] Work nicely with all application state (foreground, background, killed, locked).\r\n\r\n- [x] More flexible APIs.\r\n\r\n*Thanks to [jpudysz](https://github.com/jpudysz/react-native-callkeep)'s folk of react-native-callkeep, version 2 is heavily depended on it.*\r\n\r\n### Migrate from v1\r\n\r\n- `getLaunchParameters()` & `clearLaunchParameters()` is now replaced by `openAppFromHeadlessMode()` & `getExtrasFromHeadlessMode()`.\r\n\r\n- Answer calls from background / killed state no longer open app and send launchParams, you need to listen to `answerCall` event from headless job and trigger `backToForeground` or `openAppFromHeadlessMode` manually.\r\n\r\n## Getting started\r\n\r\n`$ npm install @bob.hardcoder/react-native-incoming-call --save`\r\n\r\nor\r\n\r\n`$ yarn add @bob.hardcoder/react-native-incoming-call`\r\n\r\n### Addition installation step\r\n\r\nIn `AndroidManifest.xml`:\r\n\r\n- Add `<activity android:name=\"com.incomingcall.UnlockScreenActivity\" />` line between `<application>` tag.\r\n\r\n- Add `<uses-permission android:name=\"android.permission.VIBRATE\" />` permission.\r\n\r\n- Also, it's recommend to put `android:launchMode=\"singleInstance\"` in `<activity android:name=\".MainActivity\"...` tag to prevent duplicate activities.\r\n\r\nFor RN >= 0.60, it's done. Otherwise:\r\n\r\n`$ react-native link @bob.hardcoder/react-native-incoming-call`\r\n\r\n## Usage\r\n\r\nIn `App.js`:\r\n\r\n```javascript\r\nimport {useEffect} from 'react';\r\nimport {DeviceEventEmitter, Platform} from 'react-native';\r\nimport IncomingCall from '@bob.hardcoder/react-native-incoming-call';\r\n\r\n// Listen to cancel and answer call events\r\nuseEffect(() => {\r\n  if (Platform.OS === \"android\") {\r\n    /**\r\n     * App open from killed state (headless mode)\r\n    */\r\n    const payload = await IncomingCall.getExtrasFromHeadlessMode();\r\n    console.log('launchParameters', payload);\r\n    if (payload) {\r\n      // Start call action here. You probably want to navigate to some CallRoom screen with the payload.uuid.\r\n    }\r\n\r\n    /**\r\n     * App in foreground / background: listen to call events and determine what to do next\r\n    */\r\n    DeviceEventEmitter.addListener(\"endCall\", payload => {\r\n      // End call action here\r\n    });\r\n    DeviceEventEmitter.addListener(\"answerCall\", payload => {\r\n      // Start call action here. You probably want to navigate to some CallRoom screen with the payload.uuid.\r\n    });\r\n  }\r\n}, []);\r\n```\r\n\r\nIn `index.js` or anywhere firebase background handler lies: \r\n\r\n```javascript\r\nimport messaging from '@react-native-firebase/messaging';\r\nimport {DeviceEventEmitter} from 'react-native';\r\nimport IncomingCall from '@bob.hardcoder/react-native-incoming-call';\r\n\r\nmessaging().setBackgroundMessageHandler(async remoteMessage => {\r\n  // Receive remote message\r\n  if (remoteMessage?.notification?.title === 'Incoming Call') {\r\n    // Display incoming call activity.\r\n    IncomingCall.display(\r\n      'callUUIDv4', // Call UUID v4\r\n      'Quocs', // Username\r\n      'https://avatars3.githubusercontent.com/u/16166195', // Avatar URL\r\n      'Incomming Call', // Info text\r\n      20000 // Timeout for end call after 20s\r\n    );\r\n  } else if (remoteMessage?.notification?.title === 'Missed Call') {\r\n    // Terminate incoming activity. Should be called when call expired.\r\n    IncomingCall.dismiss();\r\n  }\r\n\r\n  // Listen to headless action events\r\n  DeviceEventEmitter.addListener(\"endCall\", payload => {\r\n    // End call action here\r\n  });\r\n  DeviceEventEmitter.addListener(\"answerCall\", (payload) => {\r\n    console.log('answerCall', payload);\r\n    if (payload.isHeadless) {\r\n      // Called from killed state\r\n      IncomingCall.openAppFromHeadlessMode(payload.uuid);\r\n    } else {\r\n      // Called from background state\r\n      IncomingCall.backToForeground();\r\n    }\r\n  });\r\n});\r\n```\r\n\r\n## Well-known issues\r\n\r\n### Incoming screen not show on android > 9:\r\n\r\nYou need to turn on autostart and display pop-up windows permissions manually. I'm searching for a better solution.\r\n\r\n### No vibration when screen locked:\r\n\r\nPR is welcomed! 😂\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License.\r\n\r\n[khanh@quocs.com](mailto:khanh@quocs.com)\r\n","readmeFilename":"README.md"}