ShiftCycle Update

I posted about ShiftCycle before, so read quickly about it if you missed that blog post. One of the ShiftCycle users messaged me a while ago asking to be able to reorganize the order of changes, which required a rewrite of how the tweak stored permissions.

I rewrote it, but when I was pretty tired, and completely forgot to account for if you were running the tweak for the first time, and so just wrote a transfer from the old storage to the new storage with no defaults if you didn't have the old storage. Therefore, it crashed repetitively. However, I fixed this bug, and also added in some third-party keyboard support. Third party keyboards are notoriously difficult to apply tweaks to, as they each use their own system, and it's not as standardized as just using the main iOS keyboard. Additionally, it's a much smaller portion of the market that even has them.

Unfortunately, building in support for third party keyboards involved hooking another process, and that meant IPC: inter-process communication. This used to be incredibly hard in tweaks, but now that I'm only supporting later iOS versions (7+), it's relatively easily done with CFNotificationCenter. For finding out the classes and functions of SwiftKey (the only third party keyboard ShiftCycle currently supports), I used a mix of Clutch and Cycript to hook into it and decrypt it.

The source code is up on my GitHub if you want to check it out. If you want to install it, simply add my repo,, and install ShiftCycle, or you can download it from BigBoss.