2011-10-28 8 views
11

Tôi đang làm việc trên một trò chơi iOS theo lượt sử dụng API iOS5 theo lượt mới.Làm cách nào để nhận thông báo về các trận đấu dựa trên lượt chơi GameKit?

Một trong các giao thức đại biểu bạn cần thực hiện cho điều này là GKTurnBasedEventHandlerDelegate. Một trong những phương thức để thực hiện là handleTurnEventForMatch. Đây là từ các tài liệu của Apple trên phương pháp này:

handleTurnEventForMatch

Gửi đến các đại biểu khi đến lượt các cầu thủ địa phương để hoạt động trong một trận đấu theo lượt .

- (void)handleTurnEventForMatch:(GKTurnBasedMatch *)match 

thông số

trận đấu - Một đối tượng phù hợp có chứa trạng thái hiện tại của trận đấu.

Thảo luận

Khi đại biểu của bạn nhận được thông báo này, các cầu thủ đã chấp nhận một thông báo đẩy cho một trận đấu đã được tiến hành. Trò chơi của bạn nên kết thúc mọi tác vụ đang thực hiện và chuyển sang thông tin phù hợp với thông tin do đối tượng phù hợp cung cấp.

Hầu hết trò chơi của tôi đang hoạt động. Tôi nhận được thông báo về các bước di chuyển nhận được thông qua phương thức trên. Tôi cũng thấy huy hiệu trên các biểu tượng ứng dụng đang được cập nhật thành công.

Tuy nhiên, tôi không nhận được bất kỳ thông báo hệ thống nào khác khi bật sự kiện; không có gì xuất hiện trong trung tâm thông báo, v.v. Tôi có cần phải làm gì đó ngoài GameKit để kích hoạt tính năng này không? Tôi có cần gửi thông báo cục bộ theo cách thủ công khi tôi nhận được handleTurnEventForMatch không? Các tài liệu dường như ngụ ý không kể từ khi nó nói ở trên "Khi đại biểu của bạn nhận được tin nhắn này, người chơi đã chấp nhận một thông báo đẩy cho một trận đấu đã được tiến hành."

Vì vậy, điều này dường như ngụ ý rằng các cầu thủ đã nhấp vào một thông báo đẩy để có được phương pháp này được gọi là (nhưng tất nhiên họ không bao giờ xuất hiện, vì vậy tôi không có!)

gì tôi cần phải làm gì để kích hoạt tính năng push thông báo trong ứng dụng của tôi cho các sự kiện theo lượt? Tôi có cần phải gửi một thông báo địa phương khi tôi nhận được phương thức trên không (điều này có vẻ mâu thuẫn với ý định, với sự phân biệt của tài liệu trên).

+0

Hey John, bạn đã tìm ra điều này chưa? Tôi sắp thực hiện tất cả những thứ này trong trò chơi. Hy vọng nó không quá khủng khiếp! – livingtech

+0

Plz kiểm tra câu hỏi của tôi http://stackoverflow.com/questions/16266089/gkmatchrequest-invitation-not-showing-in-other-device, tôi không hiểu tại sao tôi không nhận được thông báo trong thiết bị otehr. Có thể là tổ chức phát hành có liên quan với handleInviteFromGameCenter hoặc GKTurnBasedEventHandlerDelegate ?? – Aitul

Trả lời

14

Tôi vừa hoàn thành chiến đấu theo cách của mình thông qua này, và sau một tuần hoặc lâu hơn của đập đầu tôi chống lại bàn làm việc tôi phát hiện ra những điều quan trọng:

(1) Trình mô phỏng không nhận được những biến thông báo. Khi tôi thực hiện công việc này, nó hoạt động tốt giữa hai thiết bị. Trình mô phỏng đang phát so với thiết bị sẽ gửi sự kiện nhưng không nhận được sự kiện.Vì vậy, nếu bạn đang cố gắng sử dụng một thiết bị và trình mô phỏng để kiểm tra điều này, chúc may mắn. Sử dụng hai thiết bị.

(2) Đảm bảo rằng bạn đã bật "Trung tâm trò chơi được bật cho phiên bản này" trong iTunes kết nối và đảm bảo rằng CFBundleVersion trong ứng dụng của bạn khớp với phiên bản này. Ngay sau khi tôi làm điều này, mọi thứ bắt đầu hoạt động.

Tôi cho rằng bạn đã thực hiện: [GKTurnBasedEventHandler sharedTurnBasedEventHandler] .delegate = YOUR_DELEGATE_CLASS;

+0

đã lưu cho tôi giai điệu của thời gian. Cảm ơn – Peacemoon

-1

Bạn đã đặt thông báo đẩy lên trong iTunes kết nối/cổng cung cấp chưa? Bạn thực sự cần một chứng chỉ đặc biệt để cho phép đẩy.

Tôi gặp sự cố tương tự như bạn cho đến khi tôi thiết lập chứng chỉ.

0

Như tài liệu nói, nhận được tin nhắn đó khi người chơi chấp nhận thông báo đẩy (thường là bằng cách mở khóa điện thoại hoặc qua trung tâm thông báo). Gửi thông báo đẩy được quyết định ở phía máy khách Game Center và tự động thực hiện cho bạn bởi GameKit. Bạn không cần phải triển khai GKTurnBasedEventHandlerDelegate để chúng hoạt động, chỉ để trả lời người chơi chấp nhận chúng (bằng cách tự động quay trở lại trận đấu đó hoặc bất kỳ thứ gì).

Tôi đoán bạn nên kiểm tra kỹ trong cài đặt Thông báo của thiết bị để thấy rằng ứng dụng của bạn đã bật thông báo Trung tâm thông báo.

1

Tom Schulz nói đúng. Nhưng có một điều! : bạn có thể nhận thông báo bằng thiết bị của mình nhưng không nhận được thông báo bằng trình mô phỏng. Để thực hiện việc này, hãy luôn đặt lại cài đặt và nội dung trình mô phỏng của bạn trước khi tạo và chạy. Và trên trình giả lập, bạn có thể sử dụng phương thức tải đối sánh để nhận một số thứ cho các thử nghiệm. Hy vọng nó sẽ giúp