/**
  * Return the id of a leaderboard (category or identifier, depending on iOS version)
  *
  * @param leaderboard
  * @return
  */
 public String getLeaderboardId(GKLeaderboard leaderboard) {
   if (getIosVersion() >= IOS_7) {
     return leaderboard.getIdentifier();
   } else {
     return leaderboard.getCategory();
   }
 }
  /**
   * Load all the Leaderboards for the Game. Warning: If using iOS5 or less the Leaderboard object
   * will only include the Category (identifier)
   */
  public void loadLeaderboards() {
    // If player is not authenticated, do nothing
    if (!GKLocalPlayer.getLocalPlayer().isAuthenticated()) {
      listener.leaderboardsLoadFailed();
      return;
    }

    // If iOS version is 6 or more we use the new method
    if (getIosVersion() >= IOS_6) {
      GKLeaderboard.loadLeaderboards(
          new VoidNSArrayNSErrorBlock() {
            @SuppressWarnings({"rawtypes", "unchecked"})
            @Override
            public void invoke(NSArray array, NSError error) {
              if (error != null) {
                listener.leaderboardsLoadFailed();
              } else {
                ArrayList<GKLeaderboard> leaderboards = new ArrayList<GKLeaderboard>();
                for (NSObject leaderboard : (NSArray<NSObject>) array) {
                  leaderboards.add((GKLeaderboard) leaderboard);
                }
                listener.leaderboardsLoadCompleted(leaderboards);
              }
            }
          });
    } else { // If iOS version is 6 or less we use the deprecated method
      GKLeaderboard.loadCategories(
          new VoidNSArrayNSArrayNSErrorBlock() {
            @SuppressWarnings({"rawtypes", "unchecked"})
            @Override
            public void invoke(NSArray array, NSArray array2, NSError error) {
              if (error != null) {
                listener.leaderboardsLoadFailed();
              } else {
                ArrayList<GKLeaderboard> leaderboards = new ArrayList<GKLeaderboard>();
                for (NSObject category : (NSArray<NSObject>) array) {
                  GKLeaderboard leaderboard = new GKLeaderboard();
                  leaderboard.setCategory(((NSString) category).toString());

                  leaderboards.add(leaderboard);
                }
                listener.leaderboardsLoadCompleted(leaderboards);
              }
            }
          });
    }
  }