PocketBible for iOS Updated – Version 4.16.0

On Friday, October 6, 2023 we uploaded version 4.16.0 to the App Store. Apple approved the new version the next day.

This version was released primarily to make PocketBible for iOS compatible with our latest changes to our Bible format. These changes allow us to include data with each Bible that tell PocketBible how Bibles should interact with each other. This data used to be included in PocketBible itself, but that meant that we often had to update PocketBible on all platforms simply to release a new Bible. These changes will help us avoid having to do that.

In addition, several new features, enhancements, and bug fixes were added:

NEW FEATURES

  • Added a “direct keyboard entry” go-to-verse style to better support hardware keyboards on iPad.
  • Added press-and-hold link previews for most types of links in the note viewer.
  • Added ability to link to document fragments in notes. (Use plain text editor to add id= attribute to a tag; link with href=”#id” syntax.)

ENHANCEMENTS

  • Do a better job of managing the toolbox size when using a hardware keyboard attached to an iPad.
  • Support more types of link previews in book and Bible text. Change the way they are displayed to take up no more of the screen than required.
  • Accommodate more types of links being pasted into notes from PocketBible books and Bibles.
  • Added VoiceOver labels and hints to many more buttons.
  • Slight visual changes to the shape and borders of book panes to provide better definition when panes are displayed in tiles.
  • Added the version numbers of the Bible reference data in a Bible to its “About This Book” screen.
  • Users Guide is automatically re-installed on request if accidentally deleted.

BUG FIXES

  • Changes in the way the iOS speech synthesizer handles empty strings passed to it would cause PocketBible to sometimes repeat a verse or paragraph when reading it.
  • Duplicate notes could be created while changing the name of a Journal note. (AFS)
  • Links to websites in notes could fail if the URL contained spaces.
  • Text in alert dialogs was difficult to read when using a light color scheme while the device is in dark mode or a dark color scheme while in light mode.
  • Book, chapter, or verse numbers could get truncated in the “spinner” go-to-verse style.
  • The “spinner” style go-to-verse dialog wasn’t being displayed the first time it was invoked after having been selected in Settings.
  • The app could crash when a shortcut key was used to open the “today” menu on an iPad with a hardware keyboard.
  • Long-press on a toolbar button in landscape mode on an iPhone activated the wrong button.
  • Long press on go-to button to see list of recent verses would not display correctly if the active book was not a Bible.
  • Selecting a recent search caused the search to be performed but the results were immediately dismissed.
  • Login/Create Account screens now have dark background when dark color scheme is active.

Note on Account Deletion

Apple initially rejected this version of the app because it doesn’t provide a way for users to delete their account. This is a new requirement and we knew about it but didn’t realize it had taken effect. Apple was gracious enough to approve the app, but we’ll have to add account deletion in the next update.

The reason we don’t currently have this in any of our apps is because it is “dangerous”. Consider that account deletion will do the following:

  • Your entire account is removed from the server, including your transaction history. As a result, PocketBible is affected on all platforms even though you’re doing the removal from an iOS device. You won’t be able to download books or have access to Advanced Feature Set features on Android, macOS, or Windows when you delete the account. This cannot be undone.
  • All of your notes, highlights, bookmarks, and devotional reading progress are permanently removed from the server and from your device. This cannot be undone.
  • All books, Bibles, and AFS features are removed from your device except those that came bundled with the app.
  • Since your account and transaction history is deleted, no refunds can be issued for products purchased in the last 30 days that would otherwise be eligible for refund.
  • All settings and user preferences are removed from the device. All search and navigation history is removed. The app will restart and will believe you are running it for the first time.

Even though we plan to give you more than one opportunity to cancel the deletion sequence, once you confirm it twice, we will proceed and it can’t be undone.

We’ve always made account deletion something we do by request to tech support. If we see that a user has a lot of books or a not of notes/highlights/bookmarks, we’ll give them the opportunity to change their mind before automatically continuing. We’re sure we’ll have more than one unhappy user as a result of this Apple requirement.

Fun fact: PocketBible allows you to view your Cloud Library download account even if you refuse to log in. That’s because a few years back there was a reviewer at Apple who could not figure out the difference between “shop for Bibles and books” and “access your download account”. He told us the user has to be able to shop without logging in, then he showed us the error message he gets when he select “access your download account”. We pointed out how to get to the built-in store but he wouldn’t budge. So when you go to the Cloud Library screen without logging in, we give you the opportunity to log in, but if you choose not to, we show you an empty list. That made the Apple guy happy and they approved the app. 🙂

Serendipitous Programming

Today I’ve been working on a new feature for PocketBible for iOS and one thing led to another, and, well, I ended up implementing a feature I didn’t know I was working on, and didn’t realize how much of it was already sitting there, waiting to be exposed to the user.

So the new feature I thought I was working on is the ability to “rename” your highlight colors. That is, you’ll be able to assign a topic to each color. Then when you highlight a verse, instead of seeing a list containing “Khaki”, “Cornflower Blue” and “Hot Pink”, you’ll see “Salvation”, “God’s Love” and “Prophecy”. We’ve been wanting to implement this for a long time. While we were upgrading our cloud synchronization protocol over the last few months, I added the ability to sync highlight color names with the server and we took advantage of that in PocketBible for Windows Phone and Windows Store. The plan has always been to roll that into other platforms as we have the opportunity.

While looking through the code that shows you your list of highlight colors (which I’ll have to modify to show you your user-defined names for those colors) I stumbled into a bit of code that Jeff wrote years ago but then “commented out”. (If we have code that we’d like to retain for reference purposes but don’t want to actually have the computer execute, we turn the code into a “comment” so it will be ignored by the compiler but still be there if we want to see it.)

Those of you who have been with us for a while know that Jeff was my programming partner for 27 years before his death from cancer in May 2012. It’s been a bittersweet year as I’ve had to deal with his passing while surrounded and immersed every day in code that he wrote. I keep running into little things that remind me of him, make me want to give him a call to talk about a problem, or give me a chuckle. So it’s always interesting when I run into a piece of code like this.

What this particular piece of code did was add three additional highlighting styles to the list of colors you can highlight with. These are “underline”, “strikeout”, and “underline+strikeout”. Those look like this, this, and this, respectively.

Now, why would you ever want to strike out a verse? That’s a good question and takes me back fifteen years to the days of the Palm operating system when cameras were cameras, phones were phones, and “portable digital assistants” were all the rage. In those days, color displays were luxuries that cost money, size, weight, and battery life. So most of those devices had monochromatic screens.

On color screens, we could highlight a verse with a background color. But what could we do on these black and white screens? Since our text was coded in HTML, and since HTML offered simple styles like bold, italics, underline, and strikeout, we decided to use those. We ended up not using bold and italics because they could cause the text to re-wrap when they were applied, and in those days of wimpy processors, it just took too long and was disturbing to see. That left us with underline and strikeout, so that’s what we used.

As time has gone on, we’ve gotten to where we don’t even include these underline and strikeout highlighting styles in our programs. They’re not in PocketBible for iOS, and we weren’t planning on implementing them in PocketBible for Android. Unfortunately, some of you who were around back then and have sync’ed your highlights from your Palm PDA to PocketBible for Windows to our server and to PocketBible for iPhone expect to see those underlines. So we have to at least be able to display them if they exist, but we don’t let you create them (because we don’t want to proliferate a bad idea).

What I discovered today was Jeff’s original code for being able to create underline, strikeout, and underline+strikeout highlights in PocketBible for iOS. His comment said he had taken them out because the display engine (my code) didn’t support them. Sometime between then and now I implemented those highlight styles but we just never went back into Jeff’s code and turned those choices on.

On a whim, I enabled those lines of code and what do you know — they worked! That put me in the awkward position of trying to decide whether or not to leave them in. I never liked the idea of striking verses from the Bible, and even once you get over that, it makes the text hard to read.

About then it was time for dinner and I set the laptop aside to meet my wife and get something to eat. On the way there it occurred to me that we now have some better styling options that we had back in 1998. New versions of HTML with CSS support dotted and dashed underlines.

When I got home I spent about 30 minutes and implemented the styles you see here. These new styles replace the old styles rather than adding to them. So where you had strikeouts, you’ll have dotted underlines. And where you had strikeout+underline, you’ll have dashed underlines. I think this is a nice way of making your legacy data from your Palm days more usable and it gives you three more highlighting styles to use in PocketBible for iOS. (If you’re having trouble making out the dots and dashes, click on the screen shot to see the original size image.)

One of the cool things about this is that the underlying data storage and cloud synchronization already supports it. We’re not changing the data we save, but rather the interpretation of the data. So nothing changes in any of the other platforms nor on the server.

What I think is special about this — even though it’s not a life-changing feature — is that Jeff left it behind and it only took a little extra work to make it useful. And I like that all the infrastructure both for storing the new highlight styles and displaying them was already there.

Tomorrow I’ll get back to work on naming your highlight colors. But this was a nice little one or two hour detour to give us an unexpected new feature in PocketBible.