Để viết ứng dụng khách Nhắn tin qua đám mây Firebase đa nền tảng của bạn bằng Unity, hãy sử dụng API Nhắn tin qua đám mây của Firebase . Unity SDK hoạt động cho cả Android và Apple, với một số thiết lập bổ sung cần thiết cho từng nền tảng.
Trước khi bắt đầu
điều kiện tiên quyết
Cài đặt Unity 2019.1 trở lên. Các phiên bản cũ hơn cũng có thể tương thích nhưng sẽ không được hỗ trợ tích cực. Hỗ trợ cho Unity 2019.1 được coi là không dùng nữa và sẽ không còn được hỗ trợ tích cực sau bản phát hành chính tiếp theo.
(Chỉ dành cho nền tảng Apple) Cài đặt như sau:
- Xcode 13.3.1 trở lên
- CocoaPods 1.10.0 trở lên
Đảm bảo rằng dự án Unity của bạn đáp ứng các yêu cầu sau:
- Đối với iOS — nhắm mục tiêu iOS 11 trở lên
- Đối với tvOS - nhắm mục tiêu tvOS 12 trở lên
- Đối với Android — nhắm mục tiêu API cấp 19 (KitKat) trở lên
Thiết lập thiết bị hoặc sử dụng trình giả lập để chạy dự án Unity của bạn.
Đối với iOS hoặc tvOS — Thiết lập thiết bị thực để chạy ứng dụng của bạn và hoàn thành các tác vụ sau:
- Nhận Khóa xác thực thông báo đẩy của Apple cho tài khoản Nhà phát triển Apple của bạn.
- Bật Thông báo đẩy trong XCode trong Ứng dụng > Khả năng .
Đối với Android — Trình giả lập phải sử dụng hình ảnh giả lập với Google Play.
- Đăng nhập vào Firebase bằng tài khoản Google của bạn.
Nếu chưa có dự án Unity và chỉ muốn dùng thử sản phẩm Firebase, bạn có thể tải xuống một trong các mẫu bắt đầu nhanh của chúng tôi .
Bước 1: Tạo dự án Firebase
Trước khi có thể thêm Firebase vào dự án Unity của mình, bạn cần tạo dự án Firebase để kết nối với dự án Unity của mình. Truy cập Tìm hiểu các dự án Firebase để tìm hiểu thêm về các dự án Firebase.
Bước 2: Đăng ký ứng dụng của bạn với Firebase
Bạn có thể đăng ký một hoặc nhiều ứng dụng hoặc trò chơi để kết nối với dự án Firebase của mình.
Chuyển đến bảng điều khiển Firebase .
Ở giữa trang tổng quan về dự án, nhấp vào biểu tượng Unity (
) để khởi chạy quy trình thiết lập.Nếu bạn đã thêm một ứng dụng vào dự án Firebase của mình, hãy nhấp vào Thêm ứng dụng để hiển thị các tùy chọn nền tảng.
Chọn mục tiêu bản dựng nào của dự án Unity mà bạn muốn đăng ký hoặc thậm chí bạn có thể chọn đăng ký cả hai mục tiêu ngay bây giờ cùng một lúc.
Nhập (các) ID dành riêng cho nền tảng của dự án Unity của bạn.
Đối với iOS — Nhập ID iOS của dự án Unity của bạn vào trường ID gói iOS .
Đối với Android — Nhập ID Android của dự án Unity của bạn vào trường tên gói Android .
Thuật ngữ tên gói và ID ứng dụng thường được sử dụng thay thế cho nhau.
Mở dự án Unity của bạn trong Unity IDE, sau đó điều hướng đến phần cài đặt cho từng nền tảng:
Đối với iOS — Điều hướng đến Cài đặt bản dựng > iOS .
Đối với Android — Điều hướng đến Android > Cài đặt trình phát > Cài đặt khác .
ID dự án Unity của bạn là giá trị Mã định danh gói (ID ví dụ:
com.yourcompany.yourproject
).(Tùy chọn) Nhập (các) biệt hiệu dành riêng cho nền tảng của dự án Unity của bạn.
Những biệt hiệu này là mã định danh nội bộ, thuận tiện và chỉ hiển thị với bạn trong bảng điều khiển Firebase.Nhấp vào Đăng ký ứng dụng .
Bước 3: Thêm tệp cấu hình Firebase
Nhận (các) tệp cấu hình Firebase dành riêng cho nền tảng của bạn trong quy trình thiết lập bảng điều khiển Firebase.
Đối với iOS — Nhấp vào Tải xuống GoogleService-Info.plist .
Đối với Android — Nhấp vào Tải xuống google-services.json .
Tệp cấu hình Firebase chứa các mã định danh duy nhất nhưng không bí mật cho dự án của bạn. Để tìm hiểu thêm về tệp cấu hình này, hãy truy cập Tìm hiểu các dự án Firebase .
Bạn có thể tải xuống lại tệp cấu hình Firebase của mình bất kỳ lúc nào.
Đảm bảo tên tệp cấu hình không được thêm các ký tự bổ sung, như
(2)
.
Mở cửa sổ Dự án của dự án Unity của bạn, sau đó di chuyển (các) tệp cấu hình của bạn vào thư mục
Assets
.Quay lại bảng điều khiển Firebase, trong quy trình thiết lập, hãy nhấp vào Tiếp theo .
Bước 4: Thêm SDK Unity Firebase
Trong bảng điều khiển Firebase, nhấp vào Tải xuống Firebase Unity SDK , sau đó giải nén SDK ở một nơi thuận tiện.
Bạn có thể tải xuống lại SDK Firebase Unity bất kỳ lúc nào.
Firebase Unity SDK không dành riêng cho nền tảng.
Trong dự án Unity đang mở của bạn, điều hướng đến Nội dung > Gói nhập > Gói tùy chỉnh .
Từ SDK đã giải nén, hãy chọn các sản phẩm Firebase được hỗ trợ mà bạn muốn sử dụng trong ứng dụng của mình.
Để có trải nghiệm tối ưu với Nhắn tin qua đám mây Firebase, chúng tôi khuyên bạn nên bật Google Analytics trong dự án của mình. Ngoài ra, trong quá trình thiết lập Analytics, bạn cần thêm gói Firebase dành cho Analytics vào ứng dụng của mình.
Đã bật phân tích
- Thêm gói Firebase cho Google Analytics:
FirebaseAnalytics.unitypackage
- Thêm gói cho Firebase Cloud Messaging:
FirebaseMessaging.unitypackage
Phân tích không được bật
Thêm gói cho Firebase Cloud Messaging:
FirebaseMessaging.unitypackage
- Thêm gói Firebase cho Google Analytics:
Trong cửa sổ Nhập gói Unity , nhấp vào Nhập .
Quay lại bảng điều khiển Firebase, trong quy trình thiết lập, hãy nhấp vào Tiếp theo .
Bước 5: Xác nhận các yêu cầu về phiên bản dịch vụ của Google Play
SDK Unity của Firebase dành cho Android yêu cầu các dịch vụ của Google Play phải được cập nhật trước khi có thể sử dụng SDK.
Thêm đoạn mã sau vào đầu ứng dụng của bạn. Bạn có thể kiểm tra và tùy ý cập nhật các dịch vụ của Google Play lên phiên bản mà SDK Firebase Unity yêu cầu trước khi gọi bất kỳ phương thức nào khác trong SDK.
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(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. } });
Dự án Unity của bạn đã được đăng ký và định cấu hình để sử dụng Firebase.
Bật thông báo đẩy trên nền tảng Apple
Bước 1: Thêm khung thông báo người dùng
Nhấp vào dự án trong Xcode, sau đó chọn tab Chung từ khu vực Trình chỉnh sửa .
Cuộn xuống Linked Frameworks and Libraries , sau đó nhấp vào nút + để thêm khung.
Trong cửa sổ xuất hiện, cuộn đến UserNotifications.framework , nhấp vào mục nhập đó, sau đó nhấp vào Thêm .
Bước 2: Bật thông báo đẩy
Nhấp vào dự án trong Xcode, sau đó chọn tab Khả năng từ khu vực Trình chỉnh sửa .
Chuyển Thông báo đẩy thành Bật .
Cuộn xuống Chế độ nền , sau đó chuyển nó sang Bật .
Chọn hộp kiểm Thông báo từ xa trong Chế độ nền .
Khởi tạo nhắn tin qua đám mây Firebase
Thư viện Firebase Cloud Message sẽ được khởi chạy khi thêm trình xử lý cho sự kiện TokenReceived
hoặc MessageReceived
.
Khi khởi tạo, mã thông báo đăng ký được yêu cầu cho phiên bản ứng dụng khách. Ứng dụng sẽ nhận được mã thông báo với sự kiện OnTokenReceived
, mã này sẽ được lưu vào bộ đệm để sử dụng sau này. Bạn sẽ cần mã thông báo này nếu bạn muốn nhắm mục tiêu thiết bị cụ thể này cho tin nhắn.
Ngoài ra, bạn sẽ cần đăng ký sự kiện OnMessageReceived
nếu bạn muốn có thể nhận tin nhắn đến.
Toàn bộ thiết lập trông như thế này:
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); }
Định cấu hình Điểm vào Android Hoạt động
Trên Android, Nhắn tin qua đám mây Firebase đi kèm với hoạt động điểm truy cập tùy chỉnh thay thế UnityPlayerActivity
mặc định. Nếu bạn không sử dụng một điểm nhập tùy chỉnh thì quá trình thay thế này sẽ diễn ra tự động và bạn không cần phải thực hiện thêm bất kỳ hành động nào. Các ứng dụng không sử dụng Hoạt động điểm nhập mặc định hoặc cung cấp Assets/Plugins/AndroidManifest.xml
của riêng chúng sẽ cần cấu hình bổ sung.
Plugin Unity Cloud Messaging của Firebase trên Android đi kèm với hai tệp bổ sung:
-
Assets/Plugins/Android/libmessaging_unity_player_activity.jar
chứa một hoạt động được gọi làMessagingUnityPlayerActivity
thay thếUnityPlayerActivity
tiêu chuẩn. -
Assets/Plugins/Android/AndroidManifest.xml
hướng dẫn ứng dụng sử dụngMessagingUnityPlayerActivity
làm điểm vào ứng dụng.
Các tệp này được cung cấp vì UnityPlayerActivity
mặc định không xử lý các quá trình chuyển đổi vòng đời hoạt động onStop
, onRestart
hoặc triển khai onNewIntent
cần thiết cho Firebase Cloud Messaging để xử lý chính xác các thư đến.
Định cấu hình điểm vào tùy chỉnh Hoạt động
Nếu ứng dụng của bạn không sử dụng UnityPlayerActivity
mặc định, bạn sẽ cần xóa AndroidManifest.xml
được cung cấp và đảm bảo rằng hoạt động tùy chỉnh của bạn xử lý đúng tất cả các chuyển đổi của Vòng đời hoạt động Android (ví dụ về cách thực hiện việc này được hiển thị bên dưới). Nếu hoạt động tùy chỉnh của bạn mở rộng UnityPlayerActivity
thay vào đó, bạn có thể mở rộng com.google.firebase.MessagingUnityPlayerActivity
để triển khai tất cả các phương pháp cần thiết.
Nếu bạn đang sử dụng một Hoạt động tùy chỉnh và không mở rộng com.google.firebase.MessagingUnityPlayerActivity
, thì bạn nên đưa các đoạn mã sau vào Hoạt động của mình.
/** * 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 older 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 ensures 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); }
Phiên bản mới của Firebase C++ SDK (7.1.0 trở đi) sử dụng JobIntentService
yêu cầu sửa đổi bổ sung trong tệp AndroidManifest.xml
.
<service android:name="com.google.firebase.messaging.MessageForwardingService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="false" > </service>
Lưu ý về gửi tin nhắn trên Android
Khi ứng dụng hoàn toàn không chạy và người dùng nhấn vào một thông báo, theo mặc định, thông báo sẽ không được định tuyến thông qua các lệnh gọi lại tích hợp sẵn của FCM. Trong trường hợp này, tải trọng tin nhắn được nhận thông qua Intent
được sử dụng để khởi động ứng dụng.
Các tin nhắn nhận được trong khi ứng dụng ở chế độ nền có nội dung của trường thông báo được sử dụng để điền thông báo trên khay hệ thống, nhưng nội dung thông báo đó sẽ không được truyền tới FCM. Tức là FirebaseMessage.Notification
sẽ là null.
Tóm tắt:
trạng thái ứng dụng | Thông báo | Dữ liệu | Cả hai |
---|---|---|---|
Vấn đề xung quanh | Firebase.Messaging.FirebaseMessaging.MessageReceived | Firebase.Messaging.FirebaseMessaging.MessageReceived | Firebase.Messaging.FirebaseMessaging.MessageReceived |
Lý lịch | Khay hệ thống | Firebase.Messaging.FirebaseMessaging.MessageReceived | Thông báo: khay hệ thống Dữ liệu: trong phần bổ sung của mục đích. |
Ngăn khởi tạo tự động
FCM tạo mã thông báo đăng ký để nhắm mục tiêu theo thiết bị. Khi mã thông báo được tạo, thư viện sẽ tải mã định danh và dữ liệu cấu hình lên Firebase. Nếu muốn nhận được sự đồng ý rõ ràng trước khi sử dụng mã thông báo, bạn có thể ngăn việc tạo vào thời điểm định cấu hình bằng cách tắt FCM (và trên Android, Analytics). Để thực hiện việc này, hãy thêm giá trị siêu dữ liệu vào Info.plist
của bạn (không phải GoogleService-Info.plist
) trên Apple hoặc AndroidManifest.xml
của bạn trên Android:
Android
<?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>
Nhanh
FirebaseMessagingAutoInitEnabled = NO
Để bật lại FCM, bạn có thể thực hiện cuộc gọi thời gian chạy:
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;
Giá trị này vẫn tồn tại trong các lần khởi động lại ứng dụng sau khi được đặt.
Xử lý tin nhắn có liên kết sâu trên Android
FCM cho phép gửi tin nhắn có chứa liên kết sâu tới ứng dụng của bạn. Để nhận thư chứa liên kết sâu, bạn phải thêm bộ lọc ý định mới vào hoạt động xử lý liên kết sâu cho ứng dụng của mình. Bộ lọc ý định sẽ bắt các liên kết sâu trong miền của bạn. Nếu tin nhắn của bạn không chứa liên kết sâu, cấu hình này là không cần thiết. Trong AndroidManifest.xml:
<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>
Cũng có thể chỉ định một ký tự đại diện để làm cho bộ lọc ý định linh hoạt hơn. Ví dụ:
<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>
Khi người dùng nhấn vào thông báo có chứa liên kết đến lược đồ và máy chủ lưu trữ mà bạn chỉ định, ứng dụng của bạn sẽ bắt đầu hoạt động với bộ lọc ý định này để xử lý liên kết.
Bước tiếp theo
Sau khi thiết lập ứng dụng khách, bạn đã sẵn sàng gửi tin nhắn xuôi dòng và tin nhắn theo chủ đề bằng Firebase. Để tìm hiểu thêm, hãy xem mẫu khởi động nhanh thể hiện chức năng này.
Để thêm hành vi khác, nâng cao hơn vào ứng dụng của bạn, hãy xem hướng dẫn gửi tin nhắn từ máy chủ ứng dụng:
Hãy nhớ rằng bạn sẽ cần triển khai máy chủ để sử dụng các tính năng này.