firebase.tsx 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { Analytics, getAnalytics, logEvent, setUserProperties } from 'firebase/analytics';
  2. import { FirebaseApp, initializeApp } from 'firebase/app';
  3. let app: FirebaseApp;
  4. let analytics: Analytics;
  5. // Initialize Firebase
  6. if (import.meta.env.VITE_ENABLE_FIREBASE === 'true') {
  7. console.log('Firebase 初始化开始');
  8. // Firebase 配置
  9. const firebaseConfig = {
  10. apiKey: 'AIzaSyCxwmQ0oUKyUi-FVdqtNZx7SE_a0Mg7xHM',
  11. authDomain: 'jump-visacard.firebaseapp.com',
  12. projectId: 'jump-visacard',
  13. storageBucket: 'jump-visacard.firebasestorage.app',
  14. messagingSenderId: '508907990485',
  15. appId: '1:508907990485:web:2f3bddddfc1d431224a15c',
  16. measurementId: 'G-G87QHZ6J4L',
  17. };
  18. app = initializeApp(firebaseConfig);
  19. console.log('Firebase app 已创建');
  20. analytics = getAnalytics(app);
  21. console.log('Firebase analytics 已创建');
  22. }
  23. /**
  24. * 上报自定义事件
  25. * @param eventName 事件名称
  26. * @param eventParams 事件参数
  27. */
  28. export const reportEvent = (eventName: string, eventParams?: Record<string, any>) => {
  29. if (import.meta.env.VITE_ENABLE_FIREBASE !== 'true') {
  30. console.log(
  31. '🚫 Firebase 未启用,不上报事件, eventName:',
  32. eventName,
  33. 'eventParams:',
  34. eventParams
  35. );
  36. return;
  37. }
  38. try {
  39. logEvent(analytics, eventName, eventParams);
  40. } catch (error) {
  41. console.error('Failed to report event:', error);
  42. }
  43. };
  44. /**
  45. * 上报错误事件
  46. * @param error 错误对象
  47. * @param errorContext 错误上下文
  48. */
  49. export const reportError = (error: Error, errorContext?: Record<string, any>) => {
  50. if (import.meta.env.VITE_ENABLE_FIREBASE !== 'true') {
  51. console.log(
  52. '🚫 Firebase 未启用,不上报错误事件, error:',
  53. error,
  54. 'errorContext:',
  55. errorContext
  56. );
  57. return;
  58. }
  59. try {
  60. logEvent(analytics, 'error', {
  61. error_message: error.message,
  62. error_stack: error.stack,
  63. error_name: error.name,
  64. ...errorContext,
  65. });
  66. } catch (e) {
  67. console.error('Failed to report error:', e);
  68. }
  69. };
  70. /**
  71. * 设置用户属性
  72. * @param properties 用户属性对象
  73. */
  74. export const setUserPropertyValue = (properties: Record<string, string>) => {
  75. if (import.meta.env.VITE_ENABLE_FIREBASE !== 'true') {
  76. console.log('🚫 Firebase 未启用,不上报用户属性, properties:', properties);
  77. return;
  78. }
  79. try {
  80. setUserProperties(analytics, properties);
  81. } catch (error) {
  82. console.error('Failed to set user properties:', error);
  83. }
  84. };
  85. export { app, analytics };