Updating extensions for iOS 8

From iPhone Development Wiki

Let's collect knowledge like we did with Updating extensions for iOS 7 - paste in your notes and share what you've learned, and somebody else will organize it later. :) If you want to collaborate over IRC, see IRC for how to connect to #theos and #iphonedev.

Hey developer, you can add your knowledge here! Yes, you! Make an account and edit this page!

What has changed in iOS 8?

  • The term 'Display Identifier' has been removed from SpringBoard. Methods that used the term usually have a 'Bundle Identifier' equivalent; e.g. -[SBApplicationController applicationWithDisplayIdentifier:] and -[SBApplication displayIdentifier] are now -[SBApplicationController applicationWithBundleIdentifier] and -[SBApplication bundleIdentifier]
  • "Has anyone looked into granting entitlements in iOS 8? It would appear the popular method of hooking "_XPCConnectionHasEntitlement" no longer works." "I haven't had a whole lot of time to do testing or look for better methods but I found "_BSAuditTokenTaskHasEntitlement" which appears to have a similar function to "_XPCConnectionHasEntitlement", its part of the "assertiond" process which must be hooked in order to access it, so far it's worked. More specifically, part of the "BaseBoard" private framework within "assertiond"."
  • Mobile application containers are at /var/mobile/Containers/Application
  • Looks like certain apps dont have privileges for IORegistryEntryCreateCFProperty anymore (Safari, Mail)
  • xTM3x has been doing some research into preference saving

What is new in iOS 8, and how does it work?

  • "would anyone happen to know what the view Reachability invokes is?" "no idea, but my wild guess would be that it's springboard contexthostview for that app."
  • FrontBoard is a new thing
  • Apple seems to call the iOS side Octavia and the OS X side Nero

Which tools and other preexisting things are still working on iOS 8? Which ones don't work?

  • libsymbolicate doesn't work on 8... (VMUHeader is gone from Symbolication.framework)
  • RocketBootstrap seems to work
  • PLBatteryPropertiesEntry no longer seems to exist for getting current battery info such as: [PLBatteryPropertiesEntry batteryPropertiesEntry].currentCapacity. You can still use:
io_service_t powerSource = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPMPowerSource"));
CFNumberRef currentCapacityNum = (CFNumberRef)IORegistryEntryCreateCFProperty(powerSource, CFSTR(kIOPMPSCurrentCapacityKey), kCFAllocatorDefault, 0);

Random assorted other notes

  • In things like SBStarkBanner* classes, Stark is the codename for the blur-heavy UI since iOS 7