The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.
Lời mời chơi game mang lại cho người chơi cơ chế để mời bạn bè chơi game. Người chơi gửi lời mời cho một hoặc nhiều bạn bè và lời mời luôn có một nút kêu gọi hành động cho game đó. Người nhận có thể là người chơi hiện tại hoặc người chơi mới.
Bạn có thể sử dụng lời mời chơi game để thu hút người chơi mới hoặc thu hút lại người chơi hiện tại. Lời mời có thể được gửi trong 2 trường hợp:
Lời mời được gửi khi người gửi đang ở trong game và được hiển thị với người nhận ở vài nơi trên Facebook. Lời mời luôn mang tính riêng tư và chỉ người nhận có thể xem. Mặc dù một lời mời có thể được gửi cho nhiều người nhận cùng lúc, nhưng người nhận lời mời chỉ nhìn thấy thông tin chi tiết về người gửi, chứ không thể nhìn thấy những người nhận khác.
Lời mời chơi game hỗ trợ Game trên Facebook và game trên di động dành cho iOS và Android. Trên trang web của Facebook dành cho máy tính, nếu không được lọc, lời mời sẽ xuất hiện dưới dạng tin nhắn bật lên ở phía dưới bên trái màn hình, cũng như trong biểu tượng thông báo. Trên nền tảng di động, nếu không được lọc, lời mời sẽ xuất hiện trong danh sách thông báo trong Ứng dụng Facebook. Bạn có thể lấy dữ liệu lời mời qua API Lời mời chơi game và có thể xây dựng giao diện người dùng tùy chỉnh để có trải nghiệm tích hợp nhiều hơn trong các game trên di động. Do đó, việc triển khai lời mời phải độc lập với nền tảng và mang lại trải nghiệm người dùng thống nhất, dù trên nền tảng nào. Tuy nhiên, lời mời do người chơi gửi sẽ xuất hiện trên bất kỳ kết hợp nền tảng nào mà game của bạn hỗ trợ.
Hộp thoại lời mời chơi game được tạo qua SDK JavaScript, iOS, Android và Unity. Những ví dụ này giả định người gửi đã xác thực ứng dụng. Nếu không có người nhận nào được chỉ định, bạn có thể lọc danh sách bạn bè đến giới hạn tối đa 50 người. Bạn có thể phân đoạn danh sách theo người chơi đã đăng ký hoặc bạn bè chưa đăng ký. Điều này hữu ích để cung cấp quy trình riêng nhằm thu hút lại hoặc mời người chơi mới.
Gửi lời mời bằng công cụ chọn nhiều bạn bè do Hộp thoại lời mời chơi game cung cấp:
FB.ui({method: 'apprequests', message: 'YOUR_MESSAGE_HERE' }, function(response){ console.log(response); });
Khi hộp thoại này đóng, đối tượng response
sẽ chứa kết quả của lần gửi, bao gồm cả id request
và mảng người nhận to
. Ví dụ:
{ "request":"1428237347457728", "to":["10150002163885335"] }
Theo mặc định, người gửi được cung cấp một công cụ chọn nhiều bạn bè để có thể chọn tối đa 50 người nhận.
Do các hạn chế về độ dài URL, số người nhận tối đa trong Internet Explorer 7 hoặc 8 là 25 người khi sử dụng hộp thoại không phải iframe.
Gửi lời mời đến một người nhận cụ thể:
FB.ui({method: 'apprequests', message: 'YOUR_MESSAGE_HERE', to: 'USER_ID' }, function(response){ console.log(response); });
Nếu trường to
được chỉ định, người gửi sẽ không thể chọn người nhận bổ sung.
Gửi lời mời cho nhiều người nhận cụ thể:
FB.ui({method: 'apprequests', message: 'YOUR_MESSAGE_HERE', to: 'USER_ID, USER_ID, USER_ID' }, function(response){ console.log(response); });
Bạn có thể chỉ định nhiều người nhận qua một danh sách ID người dùng được phân tách bằng dấu phẩy.
Chúng tôi có các hạn chế về số người nhận tối đa mà bạn có thể chỉ định qua trường to
. Cụ thể là dưới 50 bạn bè và dưới 26 bạn bè khi sử dụng Internet Explorer 8 trở xuống.
Gửi lời mời đến danh sách bạn bè cụ thể:
FB.ui({method: 'apprequests', message: 'Friend Smash Request!', filters: [{name:'GROUP_1_NAME', user_ids:['USER_ID','USER_ID','USER_ID']},{name:'GROUP_2_NAME', user_ids: ['USER_ID','USER_ID','USER_ID']}] }, function(response){ console.log(response); }});
Gửi đối tượng qua lời mời bằng cách nêu rõ action_type
và object_id
:
FB.ui({method: 'apprequests', message: 'Take this bomb to blast your way to victory!', to: {user-ids}, action_type:'send', object_id: 'YOUR_OBJECT_ID' // e.g. '191181717736427' }, function(response){ console.log(response); });
Đối với lời mời dựa trên lượt chơi, vui lòng không chỉ định object_id
.
FB.ui({method: 'apprequests', message: 'Just smashed you 78 times! It\'s your turn.', to: {user-ids}, action_type:'turn' }, function(response){ console.log(response); });
Ngoài ra, bạn có thể chia người nhận thành các danh sách được đặt tên, cho phép người chơi chọn trong danh sách bạn bè được nhóm theo logic dựa trên trạng thái của họ trong game.
Để biết thêm thông tin, hãy xem tài liệu tham khảo về FB.ui
cho Facebook SDK dành cho Javascript.
Khởi chạy hộp thoại lời mời bằng công cụ chọn bạn bè do iOS SDK cung cấp:
FBSDKGameRequestContent *gameRequestContent = [[FBSDKGameRequestContent alloc] init]; // Look at FBSDKGameRequestContent for futher optional properties gameRequestContent.message = @"YOUR_MESSAGE_HERE"; gameRequestContent.title = @"OPTIONAL TITLE"; // Assuming self implements <FBSDKGameRequestDialogDelegate> [FBSDKGameRequestDialog showWithContent:gameRequestContent delegate:self];
Gửi lời mời nêu rõ action_type
và object_id
cho một người nhận cụ thể bằng iOS SDK:
FBSDKGameRequestContent *gameRequestContent = [[FBSDKGameRequestContent alloc] init]; gameRequestContent.message = @"Take this bomb to blast your way to victory!"; gameRequestContent.to = @[@"RECIPIENT_USER_ID"]; gameRequestContent.objectID = @"YOUR_OBJECT_ID"; gameRequestContent.actionType = @"ACTION_TYPE"; // Assuming self implements <FBSDKGameRequestDialogDelegate> [FBSDKGameRequestDialog showWithContent:gameRequestContent delegate:self];
Gửi lời mời bằng công cụ chọn bạn bè của hộp thoại lời mời qua Android SDK:
GameRequestDialog requestDialog; CallbackManager callbackManager; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this.getApplicationContext()); callbackManager = CallbackManager.Factory.create(); requestDialog = new GameRequestDialog(this); requestDialog.registerCallback(callbackManager, new FacebookCallback<GameRequestDialog.Result>() { public void onSuccess(GameRequestDialog.Result result) { String id = result.getId(); } public void onCancel() {} public void onError(FacebookException error) {} } ); } private void onClickRequestButton() { GameRequestContent content = new GameRequestContent.Builder() .setMessage("Come play this level with me") .build(); requestDialog.show(content); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); }
Gửi lời mời nêu rõ hành động và đối tượng bằng Android SDK:
private void onClickRequestButton() { GameRequestContent content = new GameRequestContent.Builder() .setMessage("Come play this level with me") .setTo("USER_ID") .setActionType(ActionType.SEND) .setObjectId("YOUR_OBJECT_ID") .build(); requestDialog.show(content); }
Sau đây là cách gửi lời mời trong Unity SDK. Hãy xem tài liệu về FB.AppRequest để biết thêm chi tiết.
FB.AppRequest( message: "I Just got " + GameStateManager.Score.ToString() + " points! Can you beat it?", to: recipients, data: "{\"challenge_score\":" + GameStateManager.Score.ToString() + "}" title: "Friend Smash Challenge!", callback:appRequestCallback );
Bạn có thể tạo Hộp thoại lời mời chơi game với một vài thông số bổ sung xác định hành vi của hộp thoại đó. Những thông số này được mô tả bên dưới.
Tên thông số | Mô tả | Bắt buộc |
---|---|---|
app_id | Thông tin nhận dạng duy nhất của ứng dụng. | Có |
redirect_uri | URL sẽ chuyển hướng đến sau khi người gửi nhấp vào một nút trên hộp thoại. Được dùng để đưa người gửi về game sau khi gửi lời mời. Vì lý do bảo mật, | Có, khi sử dụng Chuyển hướng URL |
to | Một | Không |
message | Một tin nhắn văn bản thuần sẽ được gửi như một phần của lời mời. Văn bản này sẽ hiển thị trong chế độ xem Trung tâm ứng dụng của lời mời, chứ không hiển thị trên biểu tượng thông báo | Có |
action_type | Được sử dụng khi xác định ngữ cảnh bổ sung về bản chất của lời mời. Các giá trị có thể là | Có, nếu đã đặt |
object_id | ID đối tượng trong Open Graph của đối tượng đang được gửi. | Có, nếu đã đặt |
filters | Thông số này kiểm soát nhóm bạn bè mà ai đó nhìn thấy nếu công cụ chọn nhiều bạn bè được hiển thị. Nếu để trống, công cụ chọn nhiều bạn bè sẽ hiển thị tất cả bạn bè trên Facebook của người dùng. Bằng cách chỉ định | Không |
exclude_ids | Một mảng ID người dùng sẽ bị loại trừ khỏi hộp thoại. Nếu ai đó bị loại trừ khỏi hộp thoại, họ sẽ không xuất hiện trong công cụ chọn nhiều bạn bè. Lưu ý: Thông số này không được SDK di động hỗ trợ nên sẽ bị bỏ qua. | Không |
max_recipients | Một số nguyên chỉ định số bạn bè tối đa mà người gửi có thể chọn trong công cụ chọn bạn bè. Thông số này không được hỗ trợ trên thiết bị di động. | Không |
data | Dữ liệu bổ sung dạng tự do mà bạn có thể chuyển để theo dõi. Dữ liệu này sẽ được lưu trữ như một phần của đối tượng lời mời đã tạo. Độ dài tối đa là 255 ký tự. | Không |
title | Tiêu đề của Hộp thoại. Độ dài tối đa là 50 ký tự. | Không |
Khi hệ thống gửi lời mời qua hộp thoại lời mời chơi game, một phản hồi sẽ được chuyển đến lệnh gọi lại có chứa thông tin sau:
Tên thông số | Mô tả |
---|---|
request | ID đối tượng lời mời. Để có ID lời mời đầy đủ, hãy ghép nối thông số này với ID người dùng từ trường |
to | Một mảng ID người dùng của người nhận cho lời mời đã tạo. |
Khi người nhận chấp nhận lời mời trên trang web dành cho máy tính của Facebook, họ sẽ được chuyển đến URL của game đã gửi lời mời đó. URL này sẽ bao gồm một thông số GET
bổ sung là request_ids
. Đây là danh sách ID lời mời được phân tách bằng dấu phẩy mà người dùng đang chấp nhận:
http://apps.facebook.com/[app_name]/?request_ids=[REQUEST_IDs]
Lời mời sẽ không tự động bị xóa khi người nhận chấp nhận. Game của bạn sẽ chịu trách nhiệm xóa lời mời. Một phương pháp phổ biến là khi khởi chạy game của bạn, hãy đọc từ API Đồ thị danh sách các lời mời còn lại cho người dùng đó và xóa từng lời mời sau khi xử lý.
Khi người nhận chấp nhận lời mời trên nền tảng di động, hành động này sẽ liên kết sâu đến ứng dụng. Một thông số khác sẽ xuất hiện trong quá trình tải ứng dụng là ID lời mời. Trách nhiệm tương tự về chấp nhận và xóa lời mời cũng được áp dụng trên di động. Bạn nên kiểm tra và xóa lời mời đang chờ khi khởi chạy game.
Mỗi lời mời đã gửi đều có một ID đối tượng lời mời duy nhất. ID này biểu thị đối tượng lời mời. Bạn có thể ghép nối ID đối tượng lời mời này với ID người dùng của người nhận để tạo phiên bản cụ thể của lời mời. Đây là một quá trình thực thể hóa lời mời đã được gửi cho người nhận cụ thể.
Ví dụ: khi gửi lời mời, phản hồi từ Hộp thoại lời mời chơi game có dạng như sau:
{ request: 'REQUEST_OBJECT_ID' to:[array of USER_IDs] }
Nếu bạn tìm kiếm ID đối tượng lời mời qua API Đồ thị, phản hồi nhận được sẽ hơi khác, tùy thuộc vào ngữ cảnh xem của hoạt động tìm kiếm, nhưng phản hồi sẽ luôn thể hiện toàn bộ đối tượng lời mời.
Ví dụ: nếu thực hiện một truy vấn đến http://graph.facebook.com/{REQUEST_OBJECT_ID}?access_token=USER_ACCESS_TOKEN
bằng mã truy cập người dùng của người nhận, bạn sẽ nhìn thấy phản hồi sau:
{ "id": "REQUEST_OBJECT_ID", "application": { "name": "APP_DISPLAY_NAME", "namespace": "APP_NAMESPACE", "id": "APP_ID" }, "to": { "name": "RECIPIENT_FULL_NAME", "id": "RECIPIENT_USER_ID" }, "from": { "name": "SENDER_FULL_NAME", "id": "SENDER_USER_ID" }, "message": "ATTACHED_MESSAGE", "created_time": "2014-01-17T16:39:00+0000" }
Lưu ý rằng cả hai trường to
và from
đều được trả về. Tuy nhiên, nếu gọi cùng một điểm cuối bằng mã truy cập của người gửi hoặc mã truy cập ứng dụng, Facebook sẽ trả về nội dung sau:
{ "id": "REQUEST_OBJECT_ID", "application": { "name": "APP_DISPLAY_NAME", "namespace": "APP_NAMESPACE", "id": "APP_ID" }, "from": { "name": "SENDER_FULL_NAME", "id": "SENDER_USER_ID" }, "message": "ATTACHED_MESSAGE", "created_time": "2014-01-17T16:39:00+0000" }
Để lấy toàn bộ lời mời bao gồm người nhận bằng mã truy cập ứng dụng, bạn cần thêm ID người dùng của người nhận sau ký tự gạch dưới "_". Ví dụ: lệnh gọi đến https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token={APP_ACCESS_TOKEN}
sẽ trả về:
{ "id": "REQUEST_OBJECT_ID", "application": { "name": "APP_DISPLAY_NAME", "namespace": "APP_NAMESPACE", "id": "APP_ID" }, "to": { "name": "RECIPIENT_FULL_NAME", "id": "RECIPIENT_USER_ID" }, "from": { "name": "SENDER_FULL_NAME", "id": "SENDER_USER_ID" }, "message": "ATTACHED_MESSAGE", "created_time": "2014-01-17T16:39:00+0000" }
Để đọc tất cả lời mời dành cho một người nhận, bạn có thể truy vấn đồ thị như minh họa bên dưới bằng USER ACCESS TOKEN
của người nhận. Hành động này sẽ trả về danh sách các id lời mời cho người dùng đó trong ứng dụng.
GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]
Lời mời chơi game sẽ không tự động bị xóa sau khi người nhận chấp nhận. Nhà phát triển có trách nhiệm xóa lời mời sau khi lời mời được chấp nhận. Bạn phải xóa lời mời thay mặt người chơi sau khi lời mời được chấp nhận.
Bạn có thể xóa lời mời bằng các phương thức sau:
Gửi yêu cầu HTTP DELETE đến request_id
đã ghép nối:
DELETE https://graph.facebook.com/[{REQUEST_OBJECT_ID}_{USER_ID}]? access_token=[USER or APP ACCESS TOKEN]
function deleteRequest(requestId) { FB.api(requestId, 'delete', function(response) { console.log(response); }); }
Bạn có thể thưởng cho người gửi Lời mời chơi game dựa trên một số hành động mà người nhận thực hiện. Ví dụ: bạn không thể thưởng cho người chơi chỉ vì đã gửi lời mời, nhưng nếu người nhận cài đặt game và đạt được một cấp độ nhất định nhờ chấp nhận lời mời đó, bạn có thể thưởng cho người gửi.
Để thưởng cho người gửi, bạn cần biết người sẽ nhận được phần thưởng. Có 2 cách để lấy thông tin này:
request_id
được trả về trong phản hồi từ hộp thoại lời mời chơi game và so khớp khi nhận được để thưởng cho người gửi.id
trong trường from
của lời mời. Nếu nhiều bạn bè cùng mời một người chơi, bạn có thể chọn thưởng cho người gửi đầu tiên hoặc tất cả người gửi.API Bạn bè có thể mời không sử dụng được với lời mời chơi game nữa. API này hiện trả về dữ liệu trống và sẽ ngừng hoạt động trong tương lai gần.
Để giúp bạn cung cấp trải nghiệm người dùng tốt nhất cho đối tượng của mình trên toàn cầu, Facebook hỗ trợ bản địa hóa cho requests
. Trước khi dịch lời mời, bạn phải nắm rõ các loại lời mời khác nhau và cách chúng được hiển thị. Bạn có thể nhìn thấy lời mời ở dạng tiêu chuẩn "Anita đã gửi lời mời cho bạn" hoặc nếu có chỉ định cặp hành động/đối tượng "Anita đã xin mạng của bạn" hoặc "Anita đã gửi cho bạn một quả bom". Ngoài ra còn có yêu cầu lượt chơi, cho mọi người biết đã đến lượt họ trong một game chơi cùng bạn bè. Người chơi đã xác thực game có thể nhìn thấy tất cả ví dụ nêu trên. Nếu chưa cài đặt game, người nhận sẽ nhìn thấy lời mời ở dạng lời mời. Ví dụ: "Anita đã mời bạn chơi Friend Smash!". Hãy xem cách dịch mỗi lời mời trong các ví dụ này.
Văn bản của lời mời được Facebook dịch tự động và nhà phát triển không thể kiểm soát nội dung này. Văn bản được dịch sang ngôn ngữ của người nhận.
Lưu ý trong các ví dụ trên, văn bản "đã mời bạn chơi" được tự động dịch sang ngôn ngữ khác, trong trường hợp này là tiếng Thái. Tên và nội dung mô tả ứng dụng được dịch trong phần "Bản địa hóa" của cài đặt ứng dụng là "Tên hiển thị" và "Mô tả", trong các hộp màu vàng bên dưới.
Lời mời cũng có thể hiển thị trong Trung tâm ứng dụng. Trong Trung tâm ứng dụng, "tin nhắn" của lời mời được hiển thị. Nhà phát triển có thể dịch tin nhắn này. Trong các ví dụ bên dưới, tin nhắn là "Can I have a life to help me through the next level?" (Bạn có thể cho tôi một mạng để giúp tôi lên cấp tiếp theo không?) bằng tiếng Anh và "ช่วยส่งตัวเพิ่มให้หน่อย ต้องใช้ไปเลเวลหน้า" bằng tiếng Thái. Hiện tại, văn bản chính của lời mời: "Anita đã gửi lời mời cho bạn" không được hiển thị trong Trung tâm ứng dụng.
Vì tin nhắn được chuyển dưới dạng thông số khi gọi hộp thoại lời mời, bạn có thể tự dịch tin nhắn này trước khi gọi hộp thoại lời mời và chuyển chuỗi đã dịch làm tin nhắn. Nếu muốn chủ động thay đổi bản dịch, bạn nên thực hiện trước khi gọi hộp thoại. Bạn có quyền quyết định ngôn ngữ mình muốn hiển thị vì đây cũng sẽ là văn bản mà người gửi nhìn thấy trong bản xem trước lời mời và người nhận nhìn thấy khi nhận được lời mời.
Nhiều nhà phát triển phát hiện ngôn ngữ của người gửi rồi sử dụng thông tin đó để xác định ngôn ngữ sẽ dùng làm tin nhắn. Họ giả định rằng trong hầu hết các trường hợp, người gửi và người nhận nói cùng một ngôn ngữ. Trong ví dụ ở trên, bạn có thể xem ngôn ngữ của người gửi. Nếu đó là tiếng Thái, bạn có thể gửi trực tiếp chuỗi tiếng Thái làm tin nhắn, như sau:
FB.ui({method: 'apprequests', message: 'ช่วยส่งตัวเพิ่มให้หน่อย ต้องใช้ไปเลเวลหน้า' }, requestCallback);
Như đã nêu trong phần Thông số hộp thoại ở trên, bạn có thể thêm tối đa 255 ký tự dữ liệu bổ sung để gửi cùng lời mời. Bạn có thể dùng tiện ích này để chuyển thông tin bổ sung về lời mời hoặc thêm thông tin nhận dạng mà bạn có thể sử dụng sau để tìm kiếm thông tin liên quan được lưu trữ trên máy chủ của mình.
Ví dụ: trong dự án game mẫu Friend Smash trên Facebook, người chơi lần lượt cạnh tranh để "phá tan" nhiều bạn bè nhất có thể. Khi một người chơi gửi thách thức cho người chơi khác qua lời mời, thông số dữ liệu sẽ được dùng để lưu trữ điểm mới nhất của người chơi thách thức. Sau đó, game trích xuất giá trị này cho người chơi nhận thách thức và đặt giá trị đó làm điểm mục tiêu cho game tiếp theo.
Khi tạo công cụ chọn nhiều bạn bè tùy chỉnh hoặc chọn người để gửi lời mời, hãy xem xét cung cấp các bộ lọc để giúp người chơi chọn người nhận mong muốn.
Một bộ lọc phổ biến được dùng khi triển khai lời mời bằng hộp thoại lời mời chơi game là bộ lọc app_non_users
. Bộ lọc này ngăn hộp thoại lời mời chơi game hiển thị những người từng chơi game của bạn. Bạn có thể cân nhắc các bộ lọc khác như: người chơi đã tương tác gần đây hoặc người chơi các game tương tự mà bạn kiểm soát. Để biết danh sách đầy đủ các bộ lọc có sẵn, hãy xem hộp thoại lời mời chơi game - tài liệu tham khảo về thông số.
Tạo cơ chế hấp dẫn cho người chơi khi họ ghé thăm bạn bè mình trong game hoặc tương tác trực tiếp với bạn bè. Ví dụ: nếu game hỗ trợ khái niệm hàng xóm, hãy tặng thêm năng lượng khi người chơi ghé thăm môi trường của hàng xóm. Nếu căn cứ của người chơi bị tấn công, hãy để bạn bè giúp họ sửa chữa. Người chơi thường tìm thấy giá trị khi giúp bạn bè tiến bộ và việc mang lại cho họ cơ hội làm vậy sẽ tạo ra trải nghiệm xã hội tốt hơn và thu hút nhiều người chơi hơn.
Cung cấp thứ gì đó có giá trị mà người chơi có thể dùng để nâng cao lối chơi hoặc trải nghiệm xã hội của mình.
Đánh giá người chơi của bạn và chia họ thành các nhóm khác nhau có ý nghĩa với game (ví dụ: người chơi mới, người chơi đang chế tạo đồ, người chơi có nhiều bạn bè, người chơi tích cực, v.v.). Hãy nghĩ về những thứ sẽ hữu ích với người chơi ở cấp độ của họ và cung cấp những thứ cụ thể cho mỗi phân đoạn.