react-native-game-center
v1.2.3
Published
Apple's Game Center integration with React Native
Downloads
22
Maintainers
Readme
React Native Game Center
Contents
Getting Started
- Install
react-native
first
npm i react-native -g
react-native init myApp
cd myApp
yarn add react-native-game-center
react-native link
react-native run-ios
Basic Usage
- In your
index.js
, use:
import RNGameCenter from "react-native-game-center"
RNGameCenter.getPlayer().then(player=>console.log("player: ",player))
Installation
- From project root
yarn add react-native-game-center
react-native link
react-native run-ios
then Follow setup Instructions
Set Up
See SETUP.md
Example
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 start
Init Method
init() <Promise?>
Details
Initiates 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
Parameters
| 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. |
Usage
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)
Player Methods
getPlayer <Promise?>
Details
Gets logged in user.
Parameters
No Parameters
Basic Usage
GameCenter.getPlayer().then(player=>{
console.log("player: ", player);
})
Response
{alias: "Garrettmacmac", displayName: "Me", playerID: "G:8135064222"}
getPlayerImage <Promise?>
Details
Gets logged player image if available. Most players don't have one.
Parameters
No Parameters
Usage
GameCenter.getPlayerImage().then(image=>{
console.log("image: ", image);
})
Success Response
{image: "/path/to/image.png"}
Failed Response
Error fetching player image
getPlayerFriends
Details
Gets 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.
Parameters
No Parameters
Usage
GameCenter.getPlayerFriends().then(friends=>{
console.log("friends: ", friends);
})
Response
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
undefined
Failed
Error fetching player friends
Leaderboard Methods
openLeaderboardModal <Promise?>
Details
Opens Game Center Modal on Leaderboard Page
Parameters
No Parameters
Usage
GameCenter.openLeaderboardModal()
.then(success=>{})//is open
.catch(error=>{})//could not open
Success Response
opened leaderboard modal
Failed Response
opened leaderboard modal
submitLeaderboardScore <Promise?>
Details
Submit progress of users leaderboard
Parameters
| Name | Required | Default | Description |
|--------------|--------------|--------------|--------------|
| score | Yes | n/a | some number to track for leaderboard |
| leaderboarIdentifier | No* (see Response) | leaderboarIdentifier
set up in Itunes Connect |
Usage
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."))
Response
Success
"Successfully submitted score"
Failed
"Error submitting score."
Achievements Methods
openAchievementModal <Promise?>
Details
Opens Game Center Modal on Leaderboard Page
Parameters
No Parameters
Usage
GameCenter.openAchievementModal()
.then(success=>{})//is open
.catch(error=>{})//could not open
Response
Success
opened achievement modal
Failed
opened achievement modal
getAchievements <Promise?>
Details
Gets players achievements if completed more than 0%.
You must declare submitAchievementScore
at least once before calling this.
Parameters
No Parameters
Usage
GameCenter.getAchievements()
.then(achievements=>{
console.log(achievements)
})
.catch(error=>{})//failed
Response
[{"showsCompletionBanner":false,"lastReportedDate":1506301241432,"completed":true,"percentComplete":100,"identifier":"novice_award"},{"showsCompletionBanner":false,"lastReportedDate":1506301211362,"completed":false,"percentComplete":5,"identifier":"pro_award"}]
or
[]
resetAchievements <Promise?>
[]
Details
Resets the players achievements.
Parameters
| Name | Required | Default | Description |
|--------------|--------------|--------------|--------------|
| hideAlert | No | {hideAlert:false}
| Hide reset confirmation prompt |
Usage
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."))
Response
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"}
submitAchievementScore <Promise?>
Details
Submit progress of users achievements
Parameters
| 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 |
Usage
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."))
Response
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 set
TODO
ADD METHODS
[ ] getLeaderboardPlayers() [ ] invite() [ ] challengeComposer() [ ] findScoresOfFriendsToChallenge()