{"id":34573,"date":"2021-12-29T15:23:35","date_gmt":"2021-12-29T20:23:35","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=34573"},"modified":"2021-12-29T15:26:05","modified_gmt":"2021-12-29T20:26:05","slug":"rcmd-vs-the-mac-app-store","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2021\/12\/29\/rcmd-vs-the-mac-app-store\/","title":{"rendered":"rcmd vs. the Mac App Store"},"content":{"rendered":"<p><a href=\"https:\/\/alinpanaitiu.com\/blog\/apps-outside-app-store\/\">Alin Panaitiu<\/a>:<\/p>\n<blockquote cite=\"https:\/\/alinpanaitiu.com\/blog\/apps-outside-app-store\/\">\n<p>The defacto way of reacting to <code>Right Command<\/code> + <code>some other key<\/code> is to monitor all key events <em>(yes, just like a keylogger)<\/em>, and discard events that don&rsquo;t contain the Right Command modifier flag.<\/p>\n<p>Easy peasy, right? Well no, because that&rsquo;s <a href=\"https:\/\/stackoverflow.com\/questions\/32116095\/how-to-use-accessibility-with-sandboxed-app\">not allowed on the App Store<\/a>.<\/p>\n<\/blockquote>\n<p>He found a workaround to using the accessibility API:<\/p>\n<blockquote cite=\"https:\/\/alinpanaitiu.com\/blog\/apps-outside-app-store\/\">\n<p>It turns out that <code>RegisterEventHotKey<\/code> is plenty fast. So fast that we were able to register the hotkeys only when <code>Right Command<\/code> was being held, and unregister them when the key was released.<\/p>\n<\/blockquote>\n<p>But then got rejected for using a private API to trigger Expos&eacute;. The only public way I know to do this is to launch the Mission Control app.<\/p>\n<blockquote cite=\"https:\/\/alinpanaitiu.com\/blog\/apps-outside-app-store\/\">\n<p>Having to pay upfront is steering away a lot of possible users, but with all that bad UX [for free trials], we decided to not implement any free trial and just sell the app for a one-time fair price.<\/p>\n<\/blockquote>\n<p>Finally the <a href=\"https:\/\/lowtechguys.com\/rcmd\/\">rcmd<\/a> app switcher is in the store:<\/p>\n<blockquote cite=\"https:\/\/lowtechguys.com\/rcmd\/\"><p>Can I cycle between windows of the same app?<\/p>\n<p>Unfortunately there&rsquo;s no macOS API that allows us to focus specific windows of an app.<\/p>\n<p>The Accessibility API would allow this in some manner but it is not allowed on the App Store.<\/p><\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2021\/03\/03\/free-trials-arent-free-apps\/\">Free Trials Aren&rsquo;t Free Apps<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2020\/07\/02\/app-store-requires-opting-out-after-trial-subscription\/\">App Store Requires Opting Out After Trial Subscription<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2018\/06\/05\/mac-app-store-sandboxing-iap-trials-multiplatform-services\/\">Mac App Store Sandboxing, IAP Trials, Multiplatform Services<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Alin Panaitiu: The defacto way of reacting to Right Command + some other key is to monitor all key events (yes, just like a keylogger), and discard events that don&rsquo;t contain the Right Command modifier flag. Easy peasy, right? Well no, because that&rsquo;s not allowed on the App Store. He found a workaround to using [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2021-12-29T20:23:38Z","apple_news_api_id":"c48bbfb1-5ff2-412d-8681-2f2df24d8cd4","apple_news_api_modified_at":"2021-12-29T20:26:08Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAg==","apple_news_api_share_url":"https:\/\/apple.news\/AxIu_sV_yQS2GgS8t8k2M1A","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[1421,125,30,32,39,2077,2153,1013,71,2152,53],"class_list":["post-34573","post","type-post","status-publish","format-standard","hentry","category-technology","tag-app-subscriptions","tag-keyboardshortcuts","tag-mac","tag-macapp","tag-macappstore","tag-macos-12","tag-mission-control","tag-private-api","tag-programming","tag-rcmd","tag-sandboxing"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/34573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=34573"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/34573\/revisions"}],"predecessor-version":[{"id":34580,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/34573\/revisions\/34580"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=34573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=34573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=34573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}