Meet react-native-game-center
hire me!
- Install
react-nativefirst
npm i react-native -g
react-native init myApp
cd myApp
yarn add react-native-game-center
react-native link
react-native run-ios- In your
index.js, use:
import RNGameCenter from "react-native-game-center"
RNGameCenter.getPlayer().then(player=>console.log("player: ",player))- From project root
yarn add react-native-game-center
react-native link
react-native run-iosthen Follow setup Instructions
See SETUP.md
or clone the repo and play with the example project
$ git clone https://github.com/garrettmac/react-native-game-center
$ cd react-native-game-center/GameCenterExample
$ yarn install
$ npm startInitiates your app with Game Center.
Add this to the top of your app before your AppRegister.
ITUNES CONNECT APP DASHBOARD
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app
Then
SELECT APP > Feature > Game Center
| Name | Required | Default | Description |
|---|---|---|---|
| leaderboardIdentifier | Yes | undefined |
Your apps default leaderboard Identifier. You can can several of these but at least one is required. |
| achievementIdentifier | No | undefined |
Your apps default achievement Identifier. Not required. Set this to avoid having to keep passing it in. |
Basic
const leaderboardIdentifier="high_scores"
GameCenter.init({leaderboardIdentifier})Advanced
const leaderboardIdentifier="high_scores"
const achievementIdentifier="novice_award"
//init app
GameCenter.init({leaderboardIdentifier,achievementIdentifier})
.then(console.log)
.catch(console.warn)Gets logged in user.
No Parameters
GameCenter.getPlayer().then(player=>{
console.log("player: ", player);
}){alias: "Garrettmacmac", displayName: "Me", playerID: "G:8135064222"}Gets logged player image if available. Most players don't have one.
No Parameters
GameCenter.getPlayerImage().then(image=>{
console.log("image: ", image);
}){image: "/path/to/image.png"}Error fetching player imageGets a list of players. Most games don't have this anymore as Apple took away the game center App. Now you see lots of users connect via Facebook, SMS and by geolocation.
No Parameters
GameCenter.getPlayerFriends().then(friends=>{
console.log("friends: ", friends);
})I don't know what this looks like, as I don't have friends 😫 and Apple said they are depreciating support for this is new versions.
Success
[...array of friends]or
undefinedFailed
Error fetching player friendsOpens Game Center Modal on Leaderboard Page
No Parameters
GameCenter.openLeaderboardModal()
.then(success=>{})//is open
.catch(error=>{})//could not openopened leaderboard modalopened leaderboard modalSubmit progress of users leaderboard
| Name | Required | Default | Description |
|---|---|---|---|
| score | Yes | n/a | some number to track for leaderboard |
| leaderboarIdentifier | No* (see Response) | leaderboarIdentifier set up in Itunes Connect |
Basic
let options={score:50};
//reverts to default leaderboarIdentifier set up in init()
GameCenter.submitLeaderboardScore(options)
//now update state
this.setState(options)Advanced
let options={
score:50,
leaderboarIdentifier:"some_other_leaderboard"
};
GameCenter.submitLeaderboardScore(options)
.then(res=>{
if(res==="Successfully submitted score")
this.setState({score:50})
})
.catch(console.warn("Users progress is not being tracked due to error."))Success
"Successfully submitted score"Failed
"Error submitting score."Opens Game Center Modal on Leaderboard Page
No Parameters
GameCenter.openAchievementModal()
.then(success=>{})//is open
.catch(error=>{})//could not openSuccess
opened achievement modalFailed
opened achievement modalGets players achievements if completed more than 0%.
You must declare submitAchievementScore at least once before calling this.
No Parameters
GameCenter.getAchievements()
.then(achievements=>{
console.log(achievements)
})
.catch(error=>{})//failed[{"showsCompletionBanner":false,"lastReportedDate":1506301241432,"completed":true,"percentComplete":100,"identifier":"novice_award"},{"showsCompletionBanner":false,"lastReportedDate":1506301211362,"completed":false,"percentComplete":5,"identifier":"pro_award"}]or
[]Resets the players achievements.
| Name | Required | Default | Description |
|---|---|---|---|
| hideAlert | No | {hideAlert:false} |
Hide reset confirmation prompt |
Basic
//Triggers confirmation prompt
GameCenter.resetAchievements()
// hides confirmation prompt
GameCenter.resetAchievements({hideAlert:true})Advanced
GameCenter.resetAchievements(res=>{
if(res.resetAchievements){
do something if user reset achievements
}
})
.catch(alert("Could not reset achievements at this time. Try again later."))If you pass in {hideAlert:true} into GameCenter.resetAchievements() Method OR the you don't pass in the hideAlert parameter and player presses "Reset"
{"resetAchievements":true,"message":"User achievements reset"}If you don't pass in the hideAlert parameter and player presses "No!"
{"resetAchievements":false,"message":"User achievements not reset"}Submit progress of users achievements
| Name | Required | Default | Description |
|---|---|---|---|
| percentComplete | Yes | n/a | number, float, or string of the percent achievement is complete. Range 1-100 |
| achievementIdentifier | No* (see Response) | achievementIdentifier set up in Itunes Connect |
|
| hideCompletionBanner | No | false |
Hides Game center banner when complete |
let options={
percentComplete:50,
achievementIdentifier:"novice_award"
};
GameCenter.submitAchievementScore(options).then(res=>{
if(res){
//success
}
})
.catch(alert("Could not update your achievements at this time. Try again later."))Success
[null]Not required if achievementIdentifier set as default in init(). achievementIdentifier always reverts to default unless defended. However, will reject promise if not passed in init() or submitAchievementScore() function
Failed
No Game Center `achievementIdentifier` passed and no default setADD METHODS
[ ] getLeaderboardPlayers() [ ] invite() [ ] challengeComposer() [ ] findScoresOfFriendsToChallenge()





