Để 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 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 trước đó 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 được 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 của 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:
- Dành cho iOS - nhắm mục tiêu iOS 11 trở lên
- Dành cho tvOS - nhắm mục tiêu tvOS 12 trở lên
- Dành cho 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 mô phỏng để chạy dự án Unity của bạn.
Đối với iOS hoặc tvOS — Thiết lập thiết bị vật lý để 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 trình mô phỏng với Google Play.
- Đăng nhập vào Firebase bằng tài khoản Google của bạn.
Nếu bạn 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 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 dự án, hãy 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 ứ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 xây dựng 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ận dạng 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à giá trị nhận dạng 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ấn 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 số nhận dạng 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 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ổ Project 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 ở nơi nào đó thuận tiện.
Bạn có thể tải xuống lại Firebase Unity SDK bất kỳ lúc nào.
SDK Unity Firebase không dành riêng cho nền tảng.
Trong dự án Unity đang mở của bạn, hãy điều hướng đến Tài sản > 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 Firebase Cloud Messaging, chúng tôi khuyên bạn nên bật Google Analytics trong dự án của mình. Ngoài ra, là một phần của 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 Nhắn tin qua đám mây Firebase:
FirebaseMessaging.unitypackage
Phân tích chưa được bật
Thêm gói cho Nhắn tin qua đám mây Firebase:
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 yêu cầu về phiên bản dịch vụ Google Play
SDK Firebase Unity dành cho Android yêu cầu dịch vụ Google Play , dịch vụ này phải được cập nhật trước khi có thể sử dụng SDK.
Thêm 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 dịch vụ Google Play lên phiên bản được SDK Unity Firebase 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.
Kích hoạ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 General từ khu vực Editor .
Cuộn xuống Linked Frameworks and Libraries , sau đó nhấp vào nút + để thêm framework.
Trong cửa sổ xuất hiện, cuộn đến UserNotifications.framework , nhấp vào mục đó, sau đó nhấp vào Add .
Bước 2: Kích hoạ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 sang Bật .
Cuộn xuống Chế độ nền , sau đó chuyển sang Bật .
Chọn hộp kiểm Thông báo từ xa trong Chế độ nền .
Khởi tạo tin nhắn đám mây Firebase
Thư viện Firebase Cloud Message sẽ được khởi tạo khi thêm trình xử lý cho các sự kiện TokenReceived
hoặc MessageReceived
.
Sau khi khởi tạo, mã thông báo đăng ký sẽ đượ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ã thông báo này sẽ được lưu vào bộ nhớ đệ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 phải đăng ký sự kiện OnMessageReceived
nếu muốn có thể nhận được 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 hoạt động điểm truy cập Android
Trên Android, Firebase Cloud Messaging đi kèm với hoạt động điểm nhập tùy chỉnh thay thế UnityPlayerActivity
mặc định. Nếu bạn không sử dụng điểm nhập tùy chỉnh thì việc thay thế này sẽ tự động diễn ra và bạn không cần phải thực hiện bất kỳ hành động bổ sung 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 nhắn tin qua đám mây 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ó tênMessagingUnityPlayerActivity
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 truy cập 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 chuyển đổi vòng đời hoạt động onStop
, onRestart
hoặc triển khai onNewIntent
cần thiết để Nhắn tin qua đám mây của Firebase xử lý chính xác các tin nhắn đến.
Định cấu hình hoạt động điểm nhập tùy chỉnh
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 cách 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 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); }
Các phiên bản mới của SDK Firebase C++ (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ề việc 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, tin nhắn sẽ không được chuyển qua các lệnh gọi lại tích hợp 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 khi ứng dụng chạy ở 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ẽ không có giá trị.
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 ý định. |
Ngăn chặn tự động khởi tạo
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 dữ liệu nhận dạng và cấu hình lên Firebase. Nếu bạn muốn nhận được quyền chọn tham gia 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
(không phải GoogleService-Info.plist
) trên Apple hoặc AndroidManifest.xml
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
Để kích hoạ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 khi 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 chứa liên kết sâu vào ứng dụng của bạn. Để nhận được 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á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 thì 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 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 chứa liên kết đến lược đồ và máy chủ 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 theo chủ đề và xuôi dòng bằng Firebase. Để tìm hiểu thêm, hãy xem mẫu bắt đầu 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.