{"id":27232,"date":"2019-11-07T13:58:00","date_gmt":"2019-11-07T18:58:00","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=27232"},"modified":"2019-11-07T13:58:00","modified_gmt":"2019-11-07T18:58:00","slug":"twitterrific-ios-windows","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2019\/11\/07\/twitterrific-ios-windows\/","title":{"rendered":"Twitterrific iOS Windows"},"content":{"rendered":"<p><a href=\"https:\/\/www.macstories.net\/stories\/twitter-ipad-apps-upgraded-with-multiwindow-support-keyboard-navigation\/\">Ryan Christoffel<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.macstories.net\/stories\/twitter-ipad-apps-upgraded-with-multiwindow-support-keyboard-navigation\/\"><p><a href=\"https:\/\/apps.apple.com\/us\/app\/twitterrific-tweet-your-way\/id580311103?uo=4\">Twitterrific<\/a> has become the first Twitter client to add multiwindow support, enabling creating separate windows for different accounts or different views within the same account. The first-party <a href=\"https:\/\/apps.apple.com\/us\/app\/twitter\/id333903271?uo=4\">Twitter<\/a> app, meanwhile, has recently added extensive support for external keyboards, likely as a side benefit of the app <a href=\"https:\/\/www.macstories.net\/reviews\/despite-some-rough-edges-twitters-mac-catalyst-app-provides-an-ipad-like-experience-thats-better-than-the-companys-web-app\/\">making its way to the Mac<\/a>. In both cases, the Twitter experience on iPad has been meaningfully improved in ways that power users will appreciate.<\/p>\n<p>[&#8230;]<\/p>\n<p>If you have more than one Twitter account, such as one for personal use and another for business, multiwindow is a compelling way to avoid needing to switch back and forth between them constantly.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/chockenberry\/status\/1189224367135297536\">Craig Hockenberry<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/chockenberry\/status\/1189224367135297536\">\n<p>This review that covers a both a third-party and first-party Twitter app shows how important the former is.<\/p>\n<p>Third parties are <em>always<\/em> first with platform features like multi-window on iPad. And we&rsquo;ve had keyboard support for several years.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/BigZaphod\/status\/1189273838036701184\">Sean Heber<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/BigZaphod\/status\/1189273838036701184\">\n<p>I did quite a lot of work to retain support for iOS 12 while adding iOS 13 multi-windowing, but it&rsquo;s kind of looking like we probably could have just dropped iOS 12 and saved myself a lot of effort. &#x1F61B;<\/p>\n<p>A particularly nasty implementation detail when adding multi-window to Twitterrific was that our previous theming system assumed a single global setting. When you send a window to the background on iOS 13, it snapshots it for the app picker a bunch of times.<\/p>\n<p>While it&rsquo;s taking snapshots for the app picker, it changes the appearance mode for <em>that window<\/em> between light\/dark so it has snapshots ready if your system appearance changes. This caused the whole app to flicker between light\/dark whenever any window was being snapshotted.<\/p>\n<p>I had to pull a LOT of stuff apart and rebuild it just to get this all to work per-window so any other visible windows you might have had open didn&rsquo;t flicker between light and dark.<\/p>\n<p>Another wrinkle here is that we allow custom themes to be loaded from iCloud Drive - but you can&rsquo;t rely on a file in iCloud Drive to be immediately available (it might have to be downloaded first, for example).<\/p>\n<p>[&#8230;]<\/p>\n<p>There are just countless little things like this to consider when implementing something as fundamentally disruptive as adding multi-window. People have no idea.<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2019\/10\/30\/twitter-for-mac-8-1\/\">Twitter for Mac 8.1<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Ryan Christoffel: Twitterrific has become the first Twitter client to add multiwindow support, enabling creating separate windows for different accounts or different views within the same account. The first-party Twitter app, meanwhile, has recently added extensive support for external keyboards, likely as a side benefit of the app making its way to the Mac. In [&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":"2019-11-07T18:58:03Z","apple_news_api_id":"98d8e5e8-e379-47b9-8f58-387ba3b5f577","apple_news_api_modified_at":"2019-11-07T18:58:03Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AmNjl6ON5R7mPWDh7o7X1dw","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":[1805,913,31,1667,26,145,1815,125,49,233],"class_list":["post-27232","post","type-post","status-publish","format-standard","hentry","category-technology","tag-dark-mode","tag-icloud-drive","tag-ios","tag-ios-13","tag-iosapp","tag-ipad","tag-ipados-13","tag-keyboardshortcuts","tag-twitter","tag-twitterrific"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/27232","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=27232"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/27232\/revisions"}],"predecessor-version":[{"id":27233,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/27232\/revisions\/27233"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=27232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=27232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=27232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}