UNPKG

expo-game-center

Version:

A comprehensive Expo module for iOS Game Center integration, providing authentication, leaderboards, achievements, and native UI presentation.

37 lines (34 loc) 1.76 kB
// Type definitions for the native module interface ExpoGameCenterModule { isGameCenterAvailable(): Promise<boolean>; authenticateLocalPlayer(): Promise<boolean>; getConstants(): { isGameCenterAvailable: boolean }; getLocalPlayer(): Promise<{ playerID: string; displayName: string; alias: string } | null>; getPlayerImage(): Promise<string | null>; submitScore(score: number, leaderboardID: string): Promise<boolean>; reportAchievement(achievementID: string, percentComplete: number): Promise<boolean>; presentLeaderboard(leaderboardID: string): Promise<void>; presentAchievements(): Promise<void>; presentGameCenterViewController(): Promise<void>; } // Use expo-modules-core for better reliability let GameCenterNativeModule: ExpoGameCenterModule | null = null; try { const { requireNativeModule } = require('expo-modules-core'); GameCenterNativeModule = requireNativeModule('ExpoGameCenter'); console.log('[ExpoGameCenter] Native module loaded successfully via expo-modules-core'); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; console.log('[ExpoGameCenter] Failed to load native module:', errorMessage); // Try alternative method try { const { requireNativeModule } = require('expo'); GameCenterNativeModule = requireNativeModule('ExpoGameCenter'); console.log('[ExpoGameCenter] Native module loaded successfully via expo'); } catch (fallbackError: unknown) { const fallbackErrorMessage = fallbackError instanceof Error ? fallbackError.message : 'Unknown error'; console.log('[ExpoGameCenter] All native module loading attempts failed:', fallbackErrorMessage); GameCenterNativeModule = null; } } export default GameCenterNativeModule;