Tuesday, February 20, 2018

Returning to iOS development.

It occurred to me that the new iPad Pro 120Hz display is a great motivation to update my Little Crane game for iOS. So after a long time, I returned to my iOS codebase. Here I report some random findings.

🔴 OS Support
Currently, Little Crane supports iOS3.2 and up. But the current Xcode (9.2) does not support anything under iOS8. Oh well, abandoning a few old devices then.

🔴 Launch Image
Also scrapped by iOS: Launch Images. If you want to have support for iPad Pro, you now need new fangled Launch Screen storyboards. As more iOS devices got released, the launching process got more complex over time:

  • First, they were just specially named images in your bundle.
  • Then, they were images in an Asset Catalog.
  • Now, they are a storyboard with a whole lot of crap that comes with this. Oh boy.

🔴 Bloated AdMob
Scrapped a long time ago, was the iAd product. So if you want to have ads in your app, you need to look elsewhere. I went with the other behemoth in advertisements: AdMob. When upgrading from AdMob SDK 7.6.0 to 7.28.0 I was unpleasantly surprised. I now need to link to a whole bunch of extra stuff. I think ads do 3D rendering now, as opposed to just playing a video? New dependencies in Admob:

  • GL Kit
  • Core Motion
  • Core Video
  • CFNetwork
  • Mobile Core Services

🔴 GKLeaderboardViewControllerDelegate
Leaderboards with a delegate has been deprecated. It probably still works, so I am tempted to leave in the old code. I do get this weird runtime error message when closing a Game Center dialog though: "yowza! restored status bar too many times!"

1 comment:

  1. GKLeaderboardViewControllerDelegate has been supplanted by the more general GKGameCenterControllerDelegate, which includes support for Achievements and Challenges as well as Leaderboards.

    To summarize:

    // the following are DEPRECATED as of iOS 7.0:
    // GKLeaderboardViewController [DEPRECATED as of iOS 7.0]
    // GKLeaderboardViewControllerDelegate [DEPRECATED as of iOS 7.0], with its one required method: leaderboardViewControllerDidFinish(_:) [DEPRECATED as of iOS 7.0].

    // the following are NOT deprecated and should be used in lieu of the above.
    // GKGameCenterViewController [introduced in iOS 6.0]
    // GKGameCenterControllerDelegate [introduced in iOS 6.0], with its one required method: gameCenterViewControllerDidFinish(_:) [introduced in iOS 6.0].