https://github.com/garrettmac/react-native-game-center
https://github.com/garrettmac/react-native-game-center
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/garrettmac/react-native-game-center
- Owner: garrettmac
- Created: 2017-09-21T22:23:19.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-17T06:38:06.000Z (10 months ago)
- Last Synced: 2024-10-06T01:23:18.973Z (8 months ago)
- Language: Objective-C
- Size: 1.79 MB
- Stars: 37
- Watchers: 4
- Forks: 16
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Meet react-native-game-center
# React Native Game Center
hire me!
![]()
![]()
![]()
# Contents
- [React Native Game Center](#react-native-game-center)
* [Contents](#contents)
* [Getting Started](#getting-started)
* [Basic Usage](#basic-usage)
* [Installation](#installation)
* [Set Up](#set-up)
- [Example](#example)
- [Methods](#methods)
- [Init Method](#init-method)
* [init()](#init----promise--)
- [Player Methods](#player-methods)
* [getPlayer()](#getplayer--promise--)
* [getPlayerImage()](#getplayerimage--promise--)
* [getPlayerFriends()](#getplayerfriends--promise--)
- [Leaderboard Methods](#leaderboard-methods)
* [openLeaderboardModal()](#openleaderboardmodal--promise--)
* [submitLeaderboardScore()](#submitleaderboardscore--promise--)
- [Achievements Methods](#achievements-methods)
* [openAchievementModal()](#openachievementmodal--promise--)
* [getAchievements()](#getachievements--promise--)
* [resetAchievements()](#resetachievements--promise--)
* [submitAchievementScore()](#submitachievementscore--promise--)- [TODO](#todo)
# Getting Started
- Install `react-native` first
```bash
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:
```bash
import RNGameCenter from "react-native-game-center"RNGameCenter.getPlayer().then(player=>console.log("player: ",player))
```# Installation
- From project root
```bash
yarn add react-native-game-center
react-native link
react-native run-ios
```
then **Follow setup Instructions**# Set Up
> See [SETUP.md](SETUP.md)# Example
or clone the repo and play with the example project
```bash
$ git clone https://github.com/garrettmac/react-native-game-center
$ cd react-native-game-center/GameCenterExample
$ yarn install
$ npm start
```# Init Method
* [init() ](#init----promise--)
- [Details](#details)
- [Parameters](#parameters)
- [Usage](#usage)## init()
#### 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**
```jsx
const leaderboardIdentifier="high_scores"GameCenter.init({leaderboardIdentifier})
```**Advanced**
```jsx
const leaderboardIdentifier="high_scores"
const achievementIdentifier="novice_award"//init app
GameCenter.init({leaderboardIdentifier,achievementIdentifier})
.then(console.log)
.catch(console.warn)```
# Player Methods
[Player Methods](#player-methods)
* [getPlayer ](#getplayer--promise--)
- [Details](#details-1)
- [Parameters](#parameters-1)
- [Basic Usage](#basic-usage-1)
- [Response](#response)
* [getPlayerImage ](#getplayerimage--promise--)
- [Details](#details-2)
- [Parameters](#parameters-2)
- [Usage](#usage-1)
- [Success Response](#success-response)
- [Failed Response](#failed-response)
+ [getPlayerFriends](#getplayerfriends)
- [Details](#details-3)
- [Parameters](#parameters-3)
- [Usage](#usage-2)
- [Response](#response-1)## getPlayer
#### Details
Gets logged in user.
#### Parameters
No Parameters
#### Basic Usage
```jsx
GameCenter.getPlayer().then(player=>{
console.log("player: ", player);
})
```#### Response
```json
{alias: "Garrettmacmac", displayName: "Me", playerID: "G:8135064222"}
```## getPlayerImage
#### Details
Gets logged player image if available.
Most players don't have one.#### Parameters
No Parameters
#### Usage
```jsx
GameCenter.getPlayerImage().then(image=>{
console.log("image: ", image);
})
```
#### Success Response```json
{image: "/path/to/image.png"}
```
#### Failed Response```json
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
```jsx
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**
```json
[...array of friends]
```
or```json
undefined
```**Failed**
```json
Error fetching player friends
```# Leaderboard Methods
- [Leaderboard Methods](#leaderboard-methods)
* [openLeaderboardModal ](#openleaderboardmodal--promise--)
- [Details](#details-4)
- [Parameters](#parameters-4)
- [Usage](#usage-3)
- [Success Response](#success-response-1)
- [Failed Response](#failed-response-1)
* [submitLeaderboardScore ](#submitleaderboardscore--promise--)
- [Details](#details-5)
- [Parameters](#parameters-5)
- [Usage](#usage-4)
- [Response](#response-2)## openLeaderboardModal
#### Details
Opens Game Center Modal on Leaderboard Page
#### Parameters
No Parameters
#### Usage
```jsx
GameCenter.openLeaderboardModal()
.then(success=>{})//is open
.catch(error=>{})//could not open```
#### Success Response
```json
opened leaderboard modal
```
#### Failed Response```json
opened leaderboard modal
```## submitLeaderboardScore
#### 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**
```jsx
let options={score:50};//reverts to default leaderboarIdentifier set up in init()
GameCenter.submitLeaderboardScore(options)
//now update state
this.setState(options)
```**Advanced**
```jsx
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**
```json
"Successfully submitted score"
```**Failed**
```json
"Error submitting score."
```# Achievements Methods
- [Achievements Methods](#achievements-methods)
* [openAchievementModal ](#openachievementmodal--promise--)
- [Details](#details-6)
- [Parameters](#parameters-6)
- [Usage](#usage-5)
- [Response](#response-3)
* [getAchievements ](#getachievements--promise--)
- [Details](#details-7)
- [Parameters](#parameters-7)
- [Usage](#usage-6)
- [Response](#response-4)
* [resetAchievements ](#resetachievements--promise--)
- [Details](#details-8)
- [Parameters](#parameters-8)
- [Usage](#usage-7)
- [Response](#response-5)
* [submitAchievementScore ](#submitachievementscore--promise--)
- [Details](#details-9)
- [Parameters](#parameters-9)
- [Usage](#usage-8)
- [Response](#response-6)## openAchievementModal
#### Details
Opens Game Center Modal on Leaderboard Page
#### Parameters
No Parameters
#### Usage
```jsx
GameCenter.openAchievementModal()
.then(success=>{})//is open
.catch(error=>{})//could not open```
#### Response
**Success**
```json
opened achievement modal
```**Failed**
```json
opened achievement modal
```## getAchievements
#### Details
Gets players achievements if completed more than 0%.
You must declare `submitAchievementScore` at least once before calling this.#### Parameters
No Parameters
#### Usage
```jsx
GameCenter.getAchievements()
.then(achievements=>{
console.log(achievements)
})
.catch(error=>{})//failed```
#### Response
```json
[{"showsCompletionBanner":false,"lastReportedDate":1506301241432,"completed":true,"percentComplete":100,"identifier":"novice_award"},{"showsCompletionBanner":false,"lastReportedDate":1506301211362,"completed":false,"percentComplete":5,"identifier":"pro_award"}]
```or
```json
[]
```## resetAchievements
> []
#### Details
Resets the players achievements.
#### Parameters
| Name | Required | Default | Description |
|--------------|--------------|--------------|--------------|
| hideAlert | No | `{hideAlert:false}` | Hide reset confirmation prompt |#### Usage
**Basic**
```jsx
//Triggers confirmation prompt
GameCenter.resetAchievements()// hides confirmation prompt
GameCenter.resetAchievements({hideAlert:true})
```
**Advanced**
```jsx
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"
```json
{"resetAchievements":true,"message":"User achievements reset"}
```If you don't pass in the `hideAlert` parameter and player presses "No!"
```json
{"resetAchievements":false,"message":"User achievements not reset"}
```## submitAchievementScore
#### 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
```jsx
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**
```json
[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**
```json
No Game Center `achievementIdentifier` passed and no default set
```# TODO
ADD METHODS
[ ] getLeaderboardPlayers()
[ ] invite()
[ ] challengeComposer()
[ ] findScoresOfFriendsToChallenge()