Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS: Mac Catalyst edition #1247

Closed
Dejal opened this issue Sep 21, 2019 · 65 comments
Closed

iOS: Mac Catalyst edition #1247

Dejal opened this issue Sep 21, 2019 · 65 comments

Comments

@Dejal
Copy link
Collaborator

Dejal commented Sep 21, 2019

Now that iOS 13 and macOS Catalina introduces the ability to build iOS apps for macOS, via Catalyst, there may be customer demand for a Mac edition of NewsBlur.

I've turned on the checkbox to build under Catalyst in a local branch, as an experiment, but there are a number of issues preventing successful building of a Mac app:

  • The most significant is the reliance on UIWebView. That is not supported in Catalyst, requiring using WKWebView instead. That isn't a simple transition, though: the web view is used extensively in NewsBlur, with JavaScript interactions and such, which would require many changes. It should be feasible, though. And may have to be done in due course even for the iOS app, since UIWebView has been discouraged since iOS 8, and is now formally deprecated as of iOS 13, in addition to being unavailable for Catalyst.

  • There's an error related to using the AddressBook framework, but that doesn't seem to be used, so can be removed.

  • There are many deprecation warnings, but those shouldn't be too hard to fix (and again will need to be addressed in due course).

Beyond those, of course, the app would need many changes to work well as a Mac app, including adding a menubar, probably some layout changes, and other UI tweaks.

But I think it could a a popular option for many people. Something to consider. Let me know if you want me to explore further.

@samuelclay
Copy link
Owner

Oh I remember attempting to transition to WKWebView a long time ago and it was not fun. I ultimately abandoned that branch.

That said, I would love to see this. NewsBlur was originally developed to replace NNW, a Mac app.

@samuelclay samuelclay added high and removed medium labels Sep 22, 2019
@Dejal
Copy link
Collaborator Author

Dejal commented Sep 22, 2019

NetNewsWire has a new lease on life now. But I'm sure Brent would welcome other Mac newsreaders.

Yeah, transitioning to WKWebView will be a fair bit of work, but I'm confident that it is feasible, useful for Catalyst, and ultimately probably required for a future iOS version.

Okay, I will begin work on that in the next month or two, depending on other priorities that come up in the meantime.

Dejal added a commit that referenced this issue Mar 29, 2020
- It’s alive, ALIVE!
- You can now build and run NewsBlur for macOS!
- Still lots of issues, including the story CSS not rendering properly, but it works.
- Plus of course making things more Mac-like, like modal views as real windows, etc.
- Committed to a new branch, since not ready for prime time.
@Dejal
Copy link
Collaborator Author

Dejal commented Mar 30, 2020

A partial list of issues I've noticed, that I'll work on in the coming months, as time allows:

  • The story web view isn’t rendering the CSS correctly.
  • The font size is a bit small; might want to embiggen everything a few points.
  • When I first resized the window, a white box appeared. Gone after relaunch, but should fix.
  • Probably will want to add three-pane support; useful for iOS too (see issue iOS: three column layout on iPad #817).
  • Should make the sidebar wider.
  • Should allow the user to resize the split panes, either using a proper split view, or (more likely) adding custom support for dragging the dividers.
  • Should show model views (e.g. Organize Sites) as separate windows.
  • Need to redo the preferences into a more Mac-like window, with popups instead of push items, etc.
  • Add more menu commands for appropriate functions.
  • A bunch of deprecation warnings that may or may not need to be fixed (lots of them, but most the same).
  • Add a circular app icon.

@samuelclay
Copy link
Owner

On the three-pane, I would love to rethink how NewsBlur iOS app has the panes. Today it's not great, but it works. I would be happy to move to something a bit more like sliding doors (ala Reeder), although that would make the dashboard river harder to show.

@Dejal
Copy link
Collaborator Author

Dejal commented Aug 30, 2020

Work on the three pane option (and much more) is underway; see #817 for more info.

@samuelclay
Copy link
Owner

samuelclay commented Jan 26, 2022

Looking good! Stories aren't tappable right now, but using the keyboard shortcut got around that. Also, the login screen needs adjustment (ugh, such an old view too).

@samuelclay
Copy link
Owner

For Catalyst, let's reintroduce story content previews, story date, and author, as well as larger fonts.
Screen Shot 2022-01-26 at 11 52 38 AM

@samuelclay
Copy link
Owner

I take that back, I prefer the extra story titles. But that's for the widget (#1334).

Let's widen the story titles a bit. Looks like they widen on their own at ~2000px.

Screen Shot 2022-01-27 at 10 18 54 AM

Screen Shot 2022-01-27 at 10 18 57 AM

Also, let's add a max-width to images of 1200px or something.

@Dejal
Copy link
Collaborator Author

Dejal commented Jan 27, 2022

The Catalyst branch and Mac app are not ready for release yet. This is on hold until more required changes are done.

@samuelclay
Copy link
Owner

Should I still be merging in catalyst into testflight?

@Dejal
Copy link
Collaborator Author

Dejal commented Jan 28, 2022

No, merge Dejal to TestFlight.

Dejal added a commit that referenced this issue Oct 5, 2023
@Dejal
Copy link
Collaborator Author

Dejal commented Oct 5, 2023

I've resumed work on the macOS edition of NewsBlur, in the Catalyst branch. The NewsBlur Alpha app for macOS is available via internal-only TestFlight.

There's still a bunch of refinements to do (so don't bother reporting issues yet), but it's in a usable shape already:

Screenshot 2023-10-05 at 14 42 46

@samuelclay
Copy link
Owner

It's really great! What happened to the widget? I want to see it in my widget dashboard on macos.

@Dejal
Copy link
Collaborator Author

Dejal commented Oct 6, 2023

As I recall, the widget isn't included in the Alpha build, for some technical reason I forget right now (maybe related to the bundle identifier or something). I'll take another look at that when next working on it.

Dejal added a commit that referenced this issue Nov 16, 2023
- Added widget on Mac.
- Updated to support latest layout APIs.
Dejal added a commit that referenced this issue Nov 16, 2023
Dejal added a commit that referenced this issue Nov 16, 2023
- Added the user info, with several tweaks to fit.
- Getting the avatar to show up was tricky.
- Nav bar buttons on the right.
Dejal added a commit that referenced this issue Nov 16, 2023
- Migrated to modern window scene support.
- Customized the menu bar, with Theme submenu, and new Site and Story menus (some items not implemented yet).
Dejal added a commit that referenced this issue Dec 13, 2023
- Updated the About window.
- Now has Mac-specific settings.
- Split Settings window into multiple panes.
Dejal added a commit that referenced this issue Dec 13, 2023
- More Settings tweaks.
- Fixed squished theme control swatches.
- Resized toolbar buttons to Mac-appropriate sizes.
- Fixed position of story detail settings popover.
Dejal added a commit that referenced this issue Dec 13, 2023
- Added Mute, Organize, Widget Sites etc commands to the File menu.
- Added Columns, Text Size, and Spacing commands to the View menu.
- Investigated nav bar theming; appears to be outside scope of window.
- Investigated menu disabling; WIP.
samuelclay added a commit that referenced this issue Aug 10, 2024
* master: (69 commits)
  iOS v13.1.1, fixing crash on iOS 16.
  Bumped version number
  Fixed crash on older iOS versions
  iOS v13.1
  Handling missing youtube duration.
  Fixing strip underscore
  iOS 15 screenshots
  Don't use the underscore cache buster anymore.
  Correct archive sub count
  Don't resync stories on new sub if it already has archive subscribers.
  More numpy changes.
  Strip underscores from feed addresses, special case jwz
  Load offline story images even when online to speed up image display.
  #1875 (borders between panes not using theme colors)
  #1247 (Mac Catalyst edition)
  #1874 (Crash on opening widget story)
  Allowing traffic on docker0 interface.
  Clean TXT records so letsencrypt doesn't fail
  Thresholding bounced newsletters email.
  #1247 (Mac Catalyst edition)
  ...
@Dejal
Copy link
Collaborator Author

Dejal commented Aug 23, 2024

I had the Mac app running in the background all day today, every hour or so bringing it to the foreground and changing feeds/stories, but every time it has shown the story on activating the app; no blank stories. I was able to reproduce the issue before my June 27 fix, but not since.

So I'll need you to re-check it, and hopefully provide more clues if it is still occurring.

@samuelclay
Copy link
Owner

Yeah I've noticed it went away so I'll chalk it up to running an older build. At this point I'll need to assembly screenshots and launch it on the mac app store, which I'll try to do in the next few days.

I just moved to SF so I'm without furniture for the next couple weeks, so I'll be limited in what I can achieve.

@Dejal
Copy link
Collaborator Author

Dejal commented Aug 27, 2024

Yeah, likely using an older build. I'm glad it's resolved.

I'll have a new TestFlight in the next few days, so it'd make sense to wait for that.

Best of luck getting set up in SF!

@samuelclay
Copy link
Owner

As I was taking screenshots, I noticed the app doesn't switch from light to dark like the iOS app does.

Screenshot 2024-08-27 at 5 21 39 PM

@samuelclay
Copy link
Owner

I manually changed it but we should include a way to use the system theme. This probably goes for the iOS app as well, as a fifth theme color for "Auto"

@Dejal
Copy link
Collaborator Author

Dejal commented Aug 28, 2024

Enable the Follow System Appearance option:

Screenshot 2024-08-27 at 20 51 44

@samuelclay
Copy link
Owner

samuelclay commented Aug 28, 2024

Can we add "Auto" to the segmented control? I find myself wanting to override it but not wanting to go back into preferences. I'll make this a separate ticket.

@samuelclay
Copy link
Owner

Ok, the app was rejected for the following reasons:

Guideline 2.1 - Performance - App Completeness

We are unable to complete the review of your app because one or more of your in-app purchase products have not been submitted for review.

Next Steps

To resolve this issue, please be sure to take action and submit your in-app purchases and upload a new binary in App Store Connect so we can proceed with our review.

Resources

Learn more about how to offer in-app purchases in App Store Connect Developer Help.

Guideline 3.1.2 - Business - Payments - Subscriptions
3.1.2(c) Subscription Information Before asking a customer to subscribe, you should clearly describe what the user will get for the price. How many issues per month? How much cloud storage? What kind of access to your service? Ensure you clearly communicate the requirements described in Schedule 2 of the Apple Developer Program License Agreement.

Issue Description

The submission did not include all the required information for apps offering auto-renewable subscriptions. Apps offering auto-renewable subscriptions must include all of the following required information in the binary:

  • Title of auto-renewing subscription, which may be the same as the in-app purchase product name
  • Length of subscription
  • Price of subscription, and price per unit if appropriate
  • Functional links to the privacy policy and Terms of Use (EULA)

The app metadata must also include functional links to the privacy policy and Terms of Use (EULA).

Next Steps

Update the app's metadata to include the following required information:

Resources

Review Schedule 2 of the Apple Developer Program License Agreement.

Guideline 4 - Design

We noticed an issue with your app's user interface that contributes to a lower-quality user experience than App Store users expect.

Specifically, we found that when the user closes the main application window there is no menu item to re-open it.

Next Steps

It would be appropriate for the app to implement a Window menu that lists the main window so it can be reopened, or provide similar functionality in another menu item.

Alternatively, if the application is a single-window app, it might be appropriate to save data and quit the app when the main window is closed.

Resources

Support

So basically we need to support in app purchases and make it so the app can be re-opened on close. I agree with the re-open on close feature, I was missing that. As for the in app purchases, they won't let us punt on that.

@Dejal
Copy link
Collaborator Author

Dejal commented Aug 29, 2024

The main window can not be closed. The Close menu item and window button are disabled. So you might need to ask for clarification if they didn't notice that, or were able to somehow close the window.

@samuelclay
Copy link
Owner

Can you make it so that the app can be closed and then re-opened? Upon re-opening, it refreshes the feed list and loads the all site stories.

@Dejal
Copy link
Collaborator Author

Dejal commented Aug 29, 2024

I've just experimented with allowing closing the window and re-opening it. I don't think that is feasible for NewsBlur at this stage, as it doesn't really support multiple "scenes", i.e. opening another window. Adding that support would require major refactoring.

I'll next experiment with quitting the app when the window is closed. Catalyst doesn't make that easy, but it might be possible.

I previously thought that preventing closing would be better, to avoid accidentally closing (you can always quit and re-launch).

Dejal added a commit that referenced this issue Aug 29, 2024
- Enabled the Close menu item and window button for the NewsBlur window.
- Closing the window quits the app.
samuelclay added a commit that referenced this issue Sep 10, 2024
* dejal:
  #1890 (Add Auto to theme selector)
  #1247 (Mac Catalyst edition)
  Fixed a feed detail swipe starting on one row and ending on another causing the wrong row being marked unread
  Prep
@samuelclay
Copy link
Owner

App was rejected on these grounds:

Guideline 5.1.1(v) - Data Collection and Storage
5.1.1(v) Account Sign-In If your app doesn’t include significant account-based features, let people use it without a login. If your app supports account creation, you must also offer account deletion within the app. Apps may not require users to enter personal information to function, except when directly relevant to the core functionality of the app or required by law. If your core app functionality is not related to a specific social network (e.g. Facebook, WeChat, Weibo, Twitter, etc.), you must provide access without a login or via another mechanism. Pulling basic profile information, sharing to the social network, or inviting friends to use the app are not considered core app functionality. The app must also include a mechanism to revoke social network credentials and disable data access between the app and social network from within the app. An app may not store credentials or tokens to social networks off of the device and may only use such credentials or tokens to directly connect to the social network from the app itself while the app is in use.

Issue Description

The app supports account creation but does not include an option to initiate account deletion. Apps that support account creation must also offer account deletion to give users more control of the data they've shared while using an app.
Follow these requirements when updating an app to support account deletion:

  • Only offering to temporarily deactivate or disable an account is insufficient.
  • If users need to visit a website to finish deleting their account, include a link directly to the website page where they can complete the process.
  • Apps may include confirmation steps to prevent users from accidentally deleting their account. However, only apps in highly-regulated industries may require users to use customer service resources, such as making a phone call or sending an email, to complete account deletion.

Next Steps

Update the app to support account deletion. If the app already supports account deletion, reply to App Review in App Store Connect and identify where to locate this feature.

So let's add account deletion to the Preferences dialog underneath Advanced. Make sure to add a confirmation message.

@Dejal
Copy link
Collaborator Author

Dejal commented Sep 26, 2024

Is there an API for that, or a standalone web page that I can send the user to, to delete the account?

@samuelclay
Copy link
Owner

There's both, but let's use this webpage: https://www.newsblur.com/profile/delete_account

@Dejal
Copy link
Collaborator Author

Dejal commented Sep 26, 2024

It isn't possible to add a button to the Settings window on macOS; it is managed by the Catalyst system using the Settings bundle. More concerning, Sequoia seems to have broken the Settings window; it doesn't appear anymore. I'm investigating.

So I'll have to add the delete account option elsewhere. Could be in the File menu below "Logout NewsBlur". Or could add it to the confirmation alert for logout — have "Cancel", "Logout", and "Delete Account" buttons. The latter would log out then show the delete account page. (Would be good to log out when deleting the account anyway.) What would you prefer?

Dejal added a commit that referenced this issue Sep 26, 2024
- Settings fix for Sequoia.
- Added Delete Account to Logout confirmation; if chosen, logs out and shows the Delete Account web page.
- Fixed crash in reloading feed after logging out.
@Dejal
Copy link
Collaborator Author

Dejal commented Sep 26, 2024

I decided that the latter suggestion was best, so implemented that. And fixed the Settings issue with Sequoia. TestFlight build incoming....

samuelclay added a commit that referenced this issue Oct 11, 2024
* master:
  Postgres secondary
  Prometheus 500GB data.
  New forum server.
  Adding youtube feeds to PuSH.
  Adding macOS screenshots.
  Updating ansible setup.
  #1890 (Add Auto to theme selector)
  #1247 (Mac Catalyst edition)
  Fixed a feed detail swipe starting on one row and ending on another causing the wrong row being marked unread
  Prep
@samuelclay
Copy link
Owner

I've been using the macOS app a ton and it's been a great experience. One change I'd like to see is to match the up-to-date experience from the web. We have a configurable dashboard on the web that has real-time updated "widgets". Could we make a new "Dashboard" top level folder, same as on the web, with the story titles in groups matching the web? I publish those lists on /reader/feeds/:

"dashboard_rivers": [
    {
        "river_id": "river:",
        "river_side": "left",
        "river_order": 0
    },
    {
        "river_id": "river:infrequent",
        "river_side": "left",
        "river_order": 1
    },
    {
        "river_id": "river:global",
        "river_side": "left",
        "river_order": 2
    }
],

They should show 5 stories in the standard story titles format, and they should reload every 5 minutes (add a random 1-5 minutes per request so they don't all refresh together at once, some people can have dozens of rivers). I'd like to see this on both iPad and macOS, so I can leave the screen open and watch the news come in.

Bonus points for left vs right lists. And extra bonus points for single column, double column, and two horizontal columns (left "column" on top row, right "column" on bottom row).

@Dejal
Copy link
Collaborator Author

Dejal commented Oct 16, 2024

That's an intriguing idea. Though this really should be a new issue, since it's only tangentially related to the Mac app; as you say, it'd be beneficial on the iPad app too.

I've added #1899.

Dejal added a commit that referenced this issue Oct 17, 2024
- Added Manage Account on the Web to Help menu.
@samuelclay
Copy link
Owner

It's approved! I'll blog about this tomorrow or early next week. Congrats, it's a terrific release and I'm very hungry for #1899 because not only will that get its own blog post but it'll help the mac app become a more present part of people's day.

@Dejal
Copy link
Collaborator Author

Dejal commented Oct 18, 2024

Yay! I'm sure lots of people will be thrilled by a native Mac edition of NewsBlur. Very exciting to get it out there.

I will be available next week for any urgent fixes (please add as new issues), or otherwise working on #1899.

samuelclay added a commit that referenced this issue Nov 13, 2024
* dejal: (21 commits)
  #1898 (Marking story as read/unread right after loading will mark different story)
  Bumped build number
  #1907 (Resizable middle column)
  Fixed #1906 (story list leaves a space after all stories read)
  Backfilling Youtube videos for premium archive subscribers.
  Handling no content when finding feeds.
  Don't guess RSS feed urls on openrss/feedburner domains.
  Adding dashboard_rivers to /reader/feeds?flat=true for #1899
  Deprecating old blog.
  Adding macOS app to Goodies.
  Adding hblog as possible server in nginx.
  Adding docker rule for hblog:80
  New macOS blog post.
  Finishing macOS blog post. Need to upgrade minima theme.
  New screenshots of the macOS app
  #1903 (Saved searches don't work)
  #1902 (Adjust position of unread indicator on story title select)
  #1247 (Mac Catalyst edition)
  Prep
  #1247 (Mac Catalyst edition)
  ...
samuelclay added a commit that referenced this issue Nov 18, 2024
* master: (36 commits)
  Static deploys should force gunicorn reload.
  New X/Twitter icons.
  New Android screenshots.
  New screenshots for homepage, updating all twitter links to x.com. Still need Android screenshot from S22.
  Android 13.3.2 230
  #1886 Support for themed icons
  #1898 (Marking story as read/unread right after loading will mark different story)
  Bumped build number
  #1907 (Resizable middle column)
  Fixed #1906 (story list leaves a space after all stories read)
  #1903 (Saved searches don't work)
  #1902 (Adjust position of unread indicator on story title select)
  #1247 (Mac Catalyst edition)
  Prep
  Add nullability annotations to ReadingAction
  #1247 (Mac Catalyst edition)
  Fixed offline images not appearing
  Android 13.3.1 229
  #1891 Handle Android 9 and below for OPML file export
  Add nullability annotation to help with Kotlin conversion
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants