Firebase āĻ•ā§āϞāĻžāωāĻĄ āĻŽā§‡āϏ⧇āϜāĻŋāĻ‚ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ


āφāĻĒāύāĻžāϰ āĻŽā§‹āĻŦāĻžāχāϞ āĻāĻŦāĻ‚ āĻ“āϝāĻŧ⧇āĻŦ āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻĒ⧇ Firebase Cloud Messaging āϕ⧀āĻ­āĻžāĻŦ⧇ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻŦ⧇āύ āϤāĻž āĻāχ āϕ⧁āχāĻ•āĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻŦāĻžāĻ°ā§āϤāĻž āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻāĻŦāĻ‚ FCM āĻĻ⧇āϖ⧁āύāĨ¤

āχāωāύāĻŋāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ Firebase Cloud Messaging āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻĒ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ

āχāωāύāĻŋāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āφāĻĒāύāĻžāϰ āĻ•ā§āϰāϏ-āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ Firebase Cloud Messaging āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻĒ āϞāĻŋāĻ–āϤ⧇, Firebase Cloud Messaging API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āχāωāύāĻŋāϟāĻŋ SDK āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ•āĻŋāϛ⧁ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϏ⧇āϟāφāĻĒ āϏāĻš Android āĻāĻŦāĻ‚ Apple āωāĻ­āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝāχ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āφāĻĒāύāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇

āĻĒā§‚āĻ°ā§āĻŦāĻļāĻ°ā§āϤ

  • Unity 2021 LTS āĻŦāĻž āϤāĻžāϰ āĻĒāϰ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύāĨ¤ āχāωāύāĻŋāϟāĻŋ 2020-āĻāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāĻŋāϤ āĻŦāϞ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻŦāĻĄāĻŧ āϰāĻŋāϞāĻŋāĻœā§‡āϰ āĻĒāϰ⧇ āφāϰ āϏāĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻžāĨ¤ āφāϗ⧇āϰ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋāĻ“ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻšāĻŦ⧇ āύāĻžā§ˇ

  • (āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ…ā§āϝāĻžāĻĒāϞ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ) āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ:

    • Xcode 13.3.1 āĻŦāĻž āωāĻšā§āϚāϤāϰ
    • CocoaPods 1.12.0 āĻŦāĻž āωāĻšā§āϚāϤāϰ
  • āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻāχ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻžāϗ⧁āϞāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰ⧇:

    • iOS āĻāϰ āϜāĻ¨ā§āϝ — āϞāĻ•ā§āĻˇā§āϝ iOS 13 āĻŦāĻž āωāĻšā§āϚāϤāϰ
    • TVOS āĻāϰ āϜāĻ¨ā§āϝ - āϞāĻ•ā§āĻˇā§āϝ tvOS 13 āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ
    • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ — āϞāĻ•ā§āĻˇā§āϝ API āĻ¸ā§āϤāϰ 21 (āϞāϞāĻŋāĻĒāĻĒ) āĻŦāĻž āωāĻšā§āϚāϤāϰ
  • āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ āĻŦāĻž āĻāĻ•āϟāĻŋ āĻāĻŽā§āϞ⧇āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎

    • iOS āĻŦāĻž tvOS-āĻāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻŋāϜāĻŋāĻ•ā§āϝāĻžāϞ āĻĄāĻŋāĻ­āĻžāχāϏ āϏ⧇āϟ āφāĻĒ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāχ āĻ•āĻžāϜāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āϰ⧁āύ:

    • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ — āĻāĻŽā§āϞ⧇āϟāϰāĻĻ⧇āϰ āĻ…āĻŦāĻļā§āϝāχ Google Play āĻāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻāĻŽā§āϞ⧇āϟāϰ āĻ›āĻŦāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āφāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āύāĻž āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒāĻŖā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĻ⧇āĻ–āϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧁āχāĻ•āĻ¸ā§āϟāĻžāĻ°ā§āϟ āύāĻŽā§āύāĻžāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ⧎

āϧāĻžāĻĒ 1: āĻāĻ•āϟāĻŋ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āĻŸā§‡ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āφāϗ⧇, āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ Firebase āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āϜāĻžāύāϤ⧇ Firebase āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĻ⧇āϖ⧁āύ⧎

āϧāĻžāĻĒ 2: Firebase-āĻ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ…ā§āϝāĻžāĻĒ āĻŦāĻž āϗ⧇āĻŽ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

  1. Firebase āĻ•āύāϏ⧋āϞ⧇ āϝāĻžāύāĨ¤

  2. āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻ“āĻ­āĻžāϰāĻ­āĻŋāω āĻĒ⧃āĻˇā§āĻ āĻžāϰ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧇, āϏ⧇āϟāφāĻĒ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ āχāωāύāĻŋāϟāĻŋ āφāχāĻ•āύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ ( )āĨ¤

    āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āφāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒ āϝ⧋āĻ— āĻ•āϰ⧇ āĻĨāĻžāϕ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āĻ…ā§āϝāĻžāĻĒ āϝ⧋āĻ— āĻ•āϰ⧁āύ -āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

  3. āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϕ⧋āύ āĻŦāĻŋāĻ˛ā§āĻĄ āϟāĻžāĻ°ā§āϗ⧇āϟ āφāĻĒāύāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻž āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ, āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻŋ āĻāĻ–āύ āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇ āωāĻ­āϝāĻŧ āϞāĻ•ā§āĻˇā§āϝāĻŽāĻžāĻ¤ā§āϰāĻž āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

  4. āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āφāχāĻĄāĻŋ(āϗ⧁āϞāĻŋ) āϞāĻŋāϖ⧁āύāĨ¤

    • iOS āĻāϰ āϜāĻ¨ā§āϝ — iOS āĻŦāĻžāĻ¨ā§āĻĄā§‡āϞ āφāχāĻĄāĻŋ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ iOS āφāχāĻĄāĻŋ āϞāĻŋāϖ⧁āύāĨ¤

    • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ - āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻĒā§āϝāĻžāϕ⧇āϜ āύāĻžāĻŽā§‡āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āφāχāĻĄāĻŋ āϞāĻŋāϖ⧁āύāĨ¤
      āĻĒāĻĻ āĻĒā§āϝāĻžāϕ⧇āϜ āύāĻžāĻŽ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāχāĻĄāĻŋ āĻĒā§āϰāĻžāϝāĻŧāχ āĻŦāĻŋāύāĻŋāĻŽāϝāĻŧāϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ.

  5. (āϐāĻšā§āĻ›āĻŋāĻ•) āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĄāĻžāĻ•āύāĻžāĻŽ āϞāĻŋāϖ⧁āύāĨ¤
    āĻāχ āĻĄāĻžāĻ•āύāĻžāĻŽāϗ⧁āϞāĻŋ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ, āϏ⧁āĻŦāĻŋāϧāĻžāϰ āĻļāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ Firebase āĻ•āύāϏ⧋āϞ⧇ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āĻĻ⧃āĻļā§āϝāĻŽāĻžāύ⧎

  6. āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

āϧāĻžāĻĒ 3: Firebase āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϝ⧋āĻ— āĻ•āϰ⧁āύ

  1. Firebase āĻ•āύāϏ⧋āϞ āϏ⧇āϟāφāĻĒ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋āϤ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ Firebase āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ(āϗ⧁āϞāĻŋ) āĻĒāĻžāύāĨ¤

    • iOS-āĻāϰ āϜāĻ¨ā§āϝ - GoogleService-Info.plist āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

    • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ — āĻĄāĻžāωāύāϞ⧋āĻĄ google-services.json āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

  2. āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āωāχāĻ¨ā§āĻĄā§‹ āϖ⧁āϞ⧁āύ, āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻĢāĻžāχāϞ(āϗ⧁āϞāĻŋ) Assets āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϏāϰāĻžāύāĨ¤

  3. Firebase āĻ•āύāϏ⧋āϞ⧇ āĻĢāĻŋāϰ⧇, āϏ⧇āϟāφāĻĒ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋āϤ⧇, Next āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

āϧāĻžāĻĒ 4: Firebase Unity SDK āϝ⧋āĻ— āĻ•āϰ⧁āύ

  1. Firebase āĻ•āύāϏ⧋āϞ⧇, Firebase Unity SDK āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ-āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ SDK āφāύāϜāĻŋāĻĒ āĻ•āϰ⧁āύāĨ¤

    • āφāĻĒāύāĻŋ āϝ⧇ āϕ⧋āύ⧋ āϏāĻŽāϝāĻŧ āφāĻŦāĻžāϰ Firebase Unity SDK āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

    • Firebase Unity SDK āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āύāϝāĻŧāĨ¤

  2. āφāĻĒāύāĻžāϰ āĻ“āĻĒ⧇āύ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇, āϏāĻŽā§āĻĒāĻĻ > āφāĻŽāĻĻāĻžāύāĻŋ āĻĒā§āϝāĻžāϕ⧇āϜ > āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āύ⧇āĻ­āĻŋāϗ⧇āϟ āĻ•āϰ⧁āύāĨ¤

  3. āφāύāϜāĻŋāĻĒ āĻ•āϰāĻž SDK āĻĨ⧇āϕ⧇, āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ Firebase āĻĒāĻŖā§āϝāϗ⧁āϞāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ āϝāĻž āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤

    Firebase Cloud Messaging āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϏāĻ°ā§āĻŦā§‹āĻ¤ā§āϤāĻŽ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ Google Analytics āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, Analytics āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āĻ…āĻ‚āĻļ āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻĒāύāĻžāϕ⧇ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ⧇ Analytics āϜāĻ¨ā§āϝ Firebase āĻĒā§āϝāĻžāϕ⧇āϜ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

    Analytics āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

    • Google Analytics āϜāĻ¨ā§āϝ Firebase āĻĒā§āϝāĻžāϕ⧇āϜ āϝ⧋āĻ— āĻ•āϰ⧁āύ: FirebaseAnalytics.unitypackage
    • Firebase Cloud Messaging āϜāĻ¨ā§āϝ āĻĒā§āϝāĻžāϕ⧇āϜ āϝ⧋āĻ— āĻ•āϰ⧁āύ: FirebaseMessaging.unitypackage

    Analytics āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻž āύ⧇āχ

    Firebase Cloud Messaging āϜāĻ¨ā§āϝ āĻĒā§āϝāĻžāϕ⧇āϜ āϝ⧋āĻ— āĻ•āϰ⧁āύ: FirebaseMessaging.unitypackage

  4. āχāĻŽā§āĻĒā§‹āĻ°ā§āϟ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϝāĻžāϕ⧇āϜ āωāχāĻ¨ā§āĻĄā§‹āϤ⧇, āφāĻŽāĻĻāĻžāύāĻŋ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

  5. Firebase āĻ•āύāϏ⧋āϞ⧇ āĻĢāĻŋāϰ⧇, āϏ⧇āϟāφāĻĒ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋āϤ⧇, Next āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

āϧāĻžāĻĒ 5: Google Play āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ Firebase Unity SDK-āĻāϰ āĻ•āĻŋāϛ⧁ āĻĒāĻŖā§āϝ⧇āϰ āϜāĻ¨ā§āϝ Google Play services āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āϕ⧋āύ āĻĒāĻŖā§āϝ⧇āϰ āĻāχ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāϛ⧇ āϤāĻž āϜāĻžāύ⧁āύāĨ¤ āϏ⧇āχ āĻĒāĻŖā§āϝāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āφāϗ⧇ Google Play services āĻ…āĻŦāĻļā§āϝāχ āφāĻĒ āϟ⧁ āĻĄā§‡āϟ āĻšāϤ⧇ āĻšāĻŦ⧇⧎

āφāĻĒāύāĻžāϰ āφāĻŦ⧇āĻĻāύ⧇āϰ āĻļ⧁āϰ⧁āϤ⧇ āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ āϕ⧋āĻĄ using āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻŋ āĻāϏāĻĄāĻŋāϕ⧇-āϤ⧇ āĻ…āĻ¨ā§āϝ āϕ⧋āύāĻ“ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ•āϞ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ Google Play services āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ­āĻžāĻŦ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

using Firebase.Extensions;
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task => {
  var dependencyStatus = task.Result;
  if (dependencyStatus == Firebase.DependencyStatus.Available) {
    // Create and hold a reference to your FirebaseApp,
    // where app is a Firebase.FirebaseApp property of your application class.
       app = Firebase.FirebaseApp.DefaultInstance;

    // Set a flag here to indicate whether Firebase is ready to use by your app.
  } else {
    UnityEngine.Debug.LogError(System.String.Format(
      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
    // Firebase Unity SDK is not safe to use here.
  }
});

āφāĻĒāύāĻžāϰ āχāωāύāĻŋāϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϰ⧇āϜāĻŋāĻ¸ā§āϟāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ Firebase āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻ…ā§āϝāĻžāĻĒāϞ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϏāĻžāĻĨ⧇ āϏ⧇āϟāφāĻĒ āĻĒāĻžāύ

āχāωāύāĻŋāϟāĻŋ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻĒāϞ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ FCM āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎

āφāĻĒāύāĻžāϰ APN āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧁āύ

Firebase-āĻ āφāĻĒāύāĻžāϰ APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧁āύāĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀ āύāĻž āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ Apple āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āϏāĻĻāĻ¸ā§āϝ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧇ āĻāĻ•āϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ⧎

  1. Firebase āĻ•āύāϏ⧋āϞ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻ­āĻŋāϤāϰ⧇, āĻ—āĻŋāϝāĻŧāĻžāϰ āφāχāĻ•āύ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ, āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āϏ⧇āϟāĻŋāĻ‚āϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻ•ā§āϞāĻžāωāĻĄ āĻŽā§‡āϏ⧇āϜāĻŋāĻ‚ āĻŸā§āϝāĻžāĻŦāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ⧎

  2. iOS āĻ…ā§āϝāĻžāĻĒ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āĻ…āϧ⧀āύ⧇ APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀- āϤ⧇, āφāĻĒāύāĻžāϰ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀, āĻ…āĻĨāĻŦāĻž āĻ‰ā§ŽāĻĒāĻžāĻĻāύ āĻĒā§āϰāĻŽāĻžāĻŖā§€āĻ•āϰāĻŖ āϕ⧀, āĻŦāĻž āωāĻ­āϝāĻŧāχ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āφāĻĒāϞ⧋āĻĄ āĻŦā§‹āϤāĻžāĻŽā§‡ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ āĻ…āĻ¨ā§āϤāϤ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ.

  3. āφāĻĒāύāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϰ āϕ⧀ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āϛ⧇āύ āϏ⧇āĻ–āĻžāύ⧇ āĻŦā§āϰāĻžāωāϜ āĻ•āϰ⧁āύ, āĻāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϖ⧁āϞ⧁āύ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ āϕ⧀āϟāĻŋāϰ āϜāĻ¨ā§āϝ āϕ⧀ āφāχāĻĄāĻŋ āϝ⧋āĻ— āĻ•āϰ⧁āύ ( āĻ…ā§āϝāĻžāĻĒāϞ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āϏāĻĻāĻ¸ā§āϝ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧇ āωāĻĒāϞāĻŦā§āϧ) āĻāĻŦāĻ‚ āφāĻĒāϞ⧋āĻĄ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤

Apple āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϗ⧁āϞāĻŋāϤ⧇ āĻĒ⧁āĻļ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋāϗ⧁āϞāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ⧎

  1. Xcode-āĻ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āϏāĻŽā§āĻĒāĻžāĻĻāĻ• āĻāϞāĻžāĻ•āĻž āĻĨ⧇āϕ⧇ āϏāĻžāϧāĻžāϰāĻŖ āĻŸā§āϝāĻžāĻŦāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύāĨ¤
  2. āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāĻž āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āϝ⧋āĻ— āĻ•āϰāϤ⧇ + āĻŦā§‹āϤāĻžāĻŽā§‡ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤
  3. āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āωāχāĻ¨ā§āĻĄā§‹āϤ⧇, UserNotifications.framework- āĻ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰ⧁āύ, āϏ⧇āχ āĻāĻ¨ā§āĻŸā§āϰāĻŋāϤ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ Add āĻ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤
  4. āĻāĻ•ā§āϏāϕ⧋āĻĄā§‡ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āϏāĻŽā§āĻĒāĻžāĻĻāĻ• āĻāϞāĻžāĻ•āĻž āĻĨ⧇āϕ⧇ āϏāĻ•ā§āώāĻŽāϤāĻž āĻŸā§āϝāĻžāĻŦāϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύāĨ¤
  5. āĻĒ⧁āĻļ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋāϗ⧁āϞāĻŋ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤
  6. āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ āĻŽā§‹āĻĄā§‡ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤
  7. āĻĒāϟāĻ­ā§‚āĻŽāĻŋ āĻŽā§‹āĻĄā§‡āϰ āĻ…āϧ⧀āύ⧇ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻšā§‡āĻ•āĻŦāĻ•ā§āϏ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ•āϰ⧁āύāĨ¤

Firebase Cloud Messaging āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ

TokenReceived āĻŦāĻž MessageReceived āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ Firebase āĻ•ā§āϞāĻžāωāĻĄ āĻŽā§‡āϏ⧇āϜ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āφāϰāĻŽā§āĻ­ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

āφāϰāĻŽā§āĻ­ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻŸā§‹āϕ⧇āύ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ OnTokenReceived āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻŸā§‹āϕ⧇āύ āĻĒāĻžāĻŦ⧇, āϝāĻž āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāχ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĄāĻŋāĻ­āĻžāχāϏāϟāĻŋāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻāχ āĻŸā§‹āϕ⧇āύāϟāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇⧎

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āĻĒ⧇āϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϕ⧇ OnMessageReceived āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āϏ⧇āϟāφāĻĒ āĻāχ āĻŽāϤ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϏāĻžāĻĨ⧇ āϏ⧇āϟāφāĻĒ āĻĒāĻžāύ

āχāωāύāĻŋāϟāĻŋ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ FCM āϏ⧇āϟāφāĻĒ āĻ•āϰāϤ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎

āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ

Firebase Cloud Messaging āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ āϝāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ UnityPlayerActivity āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻāχ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϘāϟāĻŦ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϕ⧇ āϕ⧋āύ⧋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ āύāĻŋāϤ⧇ āĻšāĻŦ⧇ āύāĻžāĨ¤

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ Firebase Cloud Messaging āχāωāύāĻŋāϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āĻĻ⧁āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĢāĻžāχāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāĻžāĻ¨ā§āĻĄāĻŋāϞ āĻ•āϰ⧇ āφāϏ⧇:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar MessagingUnityPlayerActivity āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ UnityPlayerActivity āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āĨ¤
  • Assets/Plugins/Android/AndroidManifest.xml āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϕ⧇ MessagingUnityPlayerActivity āĻ…ā§āϝāĻžāĻĒ⧇ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻĻ⧇āϝāĻŧāĨ¤

āĻāχ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻĄāĻŋāĻĢāĻ˛ā§āϟ UnityPlayerActivity onStop , onRestart āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋ āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ āĻŸā§āϰāĻžāύāϜāĻŋāĻļāύ āĻŦāĻž onNewIntent āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇ āύāĻž āϝāĻž Firebase Cloud Messaging āϜāĻ¨ā§āϝ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āχāύāĻ•āĻžāĻŽāĻŋāĻ‚ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāĨ¤

āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ

āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ UnityPlayerActivity āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇ āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϕ⧇ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻž AndroidManifest.xml āϏāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āφāĻĒāύāĻžāϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻŋāϟāĻŋ āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧇ (āĻāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āϰāĻŦ⧇āύ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āύ⧀āĻšā§‡ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇)āĨ¤ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ UnityPlayerActivity āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧇ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ com.google.firebase.MessagingUnityPlayerActivity āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝāĻž āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇⧎

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ com.google.firebase.MessagingUnityPlayerActivity āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āύāĻž āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻžāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ¸ā§āύāĻŋāĻĒ⧇āϟāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āωāϚāĻŋāϤ⧎

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * received the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  // For earlier versions of Firebase C++ SDK (< 7.1.0), use `startService`.
  // startService(message);
  MessageForwardingService.enqueueWork(this, message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This makes sure that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

Firebase C++ SDK (7.1.0 āĻāϰ āĻĒāϰ) āĻāϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ JobIntentService āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϝāĻžāϰ āϜāĻ¨ā§āϝ AndroidManifest.xml āĻĢāĻžāχāϞ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

<service android:name="com.google.firebase.messaging.MessageForwardingService"
     android:permission="android.permission.BIND_JOB_SERVICE"
     android:exported="false" >
</service>

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āĻŽā§‡āϏ⧇āϜ āĻĄā§‡āϞāĻŋāĻ­āĻžāϰāĻŋ

āϝāĻ–āύ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻŽā§‹āĻŸā§‡āĻ“ āϚāϞāϛ⧇ āύāĻž āĻāĻŦāĻ‚ āĻāĻ•āϜāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋāϤ⧇ āĻŸā§āϝāĻžāĻĒ āĻ•āϰ⧇, āϤāĻ–āύ āĻŦāĻžāĻ°ā§āϤāĻžāϟāĻŋ, āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, FCM -āĻāϰ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϰāĻžāωāϟ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻāĻ•āϟāĻŋ Intent āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŦāĻžāĻ°ā§āϤāĻž āĻĒ⧇āϞ⧋āĻĄāϗ⧁āϞāĻŋ āĻĒā§āϰāĻžāĻĒā§āϤ āĻšāϝāĻŧāĨ¤

āĻ…ā§āϝāĻžāĻĒāϟāĻŋāϤ⧇ āĻĨāĻžāĻ•āĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āĻĒā§āϰāĻžāĻĒā§āϤ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āϤāĻžāĻĻ⧇āϰ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŸā§āϰ⧇ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĒāĻĒ⧁āϞ⧇āϟ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ, āϤāĻŦ⧇ āϏ⧇āχ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϟāĻŋ FCM -āĻ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻžāĨ¤ āĻāϰ āĻ…āĻ°ā§āĻĨ āĻš'āϞ FirebaseMessage.Notification āĻāĻ•āϟāĻŋ āĻŦāĻžāϤāĻŋāϞ āĻšāĻŦ⧇āĨ¤

āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇:

āĻ…ā§āϝāĻžāĻĒ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻĄā§‡āϟāĻž āωāĻ­āϝāĻŧ
āĻĢā§‹āϰāĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
āĻĒāϟāĻ­ā§‚āĻŽāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŸā§āϰ⧇ Firebase.Messaging.FirebaseMessaging.MessageReceived āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ: āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŸā§āϰ⧇
āĻĄā§‡āϟāĻž: āĻ…āĻ­āĻŋāĻĒā§āϰāĻžāϝāĻŧ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤāĨ¤

FCM āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻ—āĻ­ā§€āϰ āϞāĻŋāĻ™ā§āĻ•āϝ⧁āĻ•ā§āϤ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āĻ—āĻ­ā§€āϰ āϞāĻŋāĻ™ā§āĻ•āϝ⧁āĻ•ā§āϤ āĻŦāĻžāĻ°ā§āϤāĻžāϗ⧁āϞāĻŋ āĻĒ⧇āϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻ—āĻ­ā§€āϰ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧇ āĻāĻŽāύ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ…āĻ­āĻŋāĻĒā§āϰāĻžāϝāĻŧ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ…āĻ­āĻŋāĻĒā§āϰāĻžāϝāĻŧ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāϟāĻŋ āφāĻĒāύāĻžāϰ āĻĄā§‹āĻŽā§‡āύ⧇āϰ āĻ—āĻ­ā§€āϰ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āϧāϰāĻž āωāϚāĻŋāϤāĨ¤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄāĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟ.āĻāĻ•ā§āϏāĻāĻŽāĻāϞ:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="http"/>
  <data android:host="CHANGE_THIS_DOMAIN.example.com" android:scheme="https"/>
</intent-filter>

āĻ…āĻ­āĻŋāĻĒā§āϰāĻžāϝāĻŧ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāϟāĻŋāϕ⧇ āφāϰāĻ“ āύāĻŽāύ⧀āϝāĻŧ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧāĻžāχāĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāĻ“ āϏāĻŽā§āĻ­āĻŦāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ:

<intent-filter>
  <action android:name="android.intent.action.VIEW"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <category android:name="android.intent.category.BROWSABLE"/>
  <data android:host="*.example.com" android:scheme="http"/>
  <data android:host="*.example.com" android:scheme="https"/>
</intent-filter>

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āϝāĻ–āύ āĻ¸ā§āĻ•āĻŋāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āϝ⧁āĻ•ā§āϤ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻŸā§āϝāĻžāĻĒ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āĻĨāĻžāϕ⧇āύ, āϤāĻ–āύ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āϞāĻŋāĻ™ā§āĻ•āϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻāχ āĻ…āĻ­āĻŋāĻĒā§āϰāĻžāϝāĻŧ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒāϟāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇āĨ¤

āĻ…āĻŸā§‹ āϏ⧂āϚāύāĻž āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰ⧁āύ

FCM āĻĄāĻŋāĻ­āĻžāχāϏ āϟāĻžāĻ°ā§āϗ⧇āϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāĻŋāĻŦāĻ¨ā§āϧāĻ•āϰāĻŖ āĻŸā§‹āϕ⧇āύ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āĻ•āϰ⧇āĨ¤ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻŸā§‹āϕ⧇āύ āωāĻ¤ā§āĻĒāĻ¨ā§āύ āĻšāϝāĻŧ, āĻ—ā§āϰāĻ¨ā§āĻĨāĻžāĻ—āĻžāϰāϟāĻŋ āϏāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĄā§‡āϟāĻž āĻĢāĻžāϝāĻŧāĻžāϰāĻŦ⧇āϏ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŸā§‹āϕ⧇āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻāĻ•āϟāĻŋ āϏ⧁āĻ¸ā§āĻĒāĻˇā§āϟ āĻ…āĻĒā§āϟ-āχāύ āĻĒ⧇āϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻāĻĢāϏāĻŋāĻāĻŽ (āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ, āĻ…ā§āϝāĻžāύāĻžāϞāĻŋāϟāĻŋāĻ•ā§āϏ⧇) āĻ…āĻ•ā§āώāĻŽ āĻ•āϰ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒā§āϰāϜāĻ¨ā§āĻŽāϕ⧇ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻŋ āĻ…ā§āϝāĻžāĻĒāϞāϟāĻŋāϤ⧇ āφāĻĒāύāĻžāϰ Info.plist (āφāĻĒāύāĻžāϰ GoogleService-Info.plist āύāϝāĻŧ) āĻŦāĻž āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āφāĻĒāύāĻžāϰ AndroidManifest.xml āϤ⧇ āĻāĻ•āϟāĻŋ āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž āĻŽāĻžāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ

<?xml version="1.0" encoding="utf-8"?>
<application>
  <meta-data android:name="firebase_messaging_auto_init_enabled"
             android:value="false" />
  <meta-data android:name="firebase_analytics_collection_enabled"
             android:value="false" />
</application>

āϏ⧁āχāĻĢāϟ

FirebaseMessagingAutoInitEnabled = NO

āĻāĻĢāϏāĻŋāĻāĻŽ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϰāĻžāύāϟāĻžāχāĻŽ āĻ•āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

āĻāχ āĻŽāĻžāύāϟāĻŋ āĻāĻ•āĻŦāĻžāϰ āϏ⧇āϟ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ āĻ…ā§āϝāĻžāĻĒāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰ⧇āĨ¤

āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒ

āφāĻĒāύāĻŋ āϏ⧇āϟāφāĻĒ āĻĒāĻĻāĻ•ā§āώ⧇āĻĒāϗ⧁āϞāĻŋ āĻļ⧇āώ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, unity āĻ•ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ FCM āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ—āĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻāĻ–āĻžāύ⧇ āϰāϝāĻŧ⧇āϛ⧇: