2013-05-09 30 views

Trả lời

1

Để viết các ứng dụng server-side trên điện thoại android:

Sao chép tập tin gcm-server.jar từ thư mục gcm-server/quận của SDK để classpath máy chủ của bạn.

Tạo một servlet (hoặc cơ chế phía máy chủ khác) mà ứng dụng Android có thể sử dụng để gửi ID đăng ký mà GCM nhận được. Ứng dụng cũng có thể cần phải gửi thông tin khác — chẳng hạn như địa chỉ email hoặc tên người dùng của người dùng — để máy chủ có thể liên kết ID đăng ký với người dùng sở hữu thiết bị. Tương tự, tạo một servlet được sử dụng để hủy đăng ký ID đăng ký. Khi máy chủ cần gửi tin nhắn đến ID đăng ký, máy chủ có thể sử dụng com.google.android.gcm.server.Sperperperperperer từ thư viện GCM.

For example: 
import com.google.android.gcm.server.*; 

Sender sender = new Sender(myApiKey); 
Message message = new Message.Builder().build(); 
MulticastResult result = sender.send(message, devices, 5); 

Đoạn trên nào sau đây:

Tạo một đối tượng người gửi sử dụng khóa API của dự án của bạn. Tạo thông báo bằng cách sử dụng ID đăng ký đã cho (trình tạo tin nhắn cũng có các phương thức để đặt tất cả các thông số tin nhắn như khóa thu gọn và dữ liệu tải trọng). Gửi tin nhắn với tối đa 5 lần thử lại (trong trường hợp máy chủ GCM không khả dụng) và lưu trữ phản hồi trên kết quả. Hiện tại, cần phân tích cú pháp kết quả và thực hiện hành động thích hợp trong các trường hợp sau:

Nếu thông báo được trả về ID đăng ký chuẩn, cần thay thế ID đăng ký hiện tại bằng ID chuẩn. Nếu lỗi trả về không được đăng ký, bạn cần xóa ID đăng ký đó vì ứng dụng đã được gỡ cài đặt khỏi thiết bị. Dưới đây là một đoạn mã để xử lý những 2 điều kiện:

if (result.getMessageId() != null) { 
String canonicalRegId = result.getCanonicalRegistrationId(); 
if (canonicalRegId != null) { 
    // same device has more than on registration ID: update database 
} 
} else { 
String error = result.getErrorCodeName(); 
if (error.equals(Constants.ERROR_NOT_REGISTERED)) { 
    // application has been removed from device - unregister database 
} 
} 

Các điều khoản yêu cầu là:

<!-- App receives GCM messages. --> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <!-- GCM connects to Google Services. --> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <!-- GCM requires a Google account. --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <!-- Keeps the processor from sleeping when a message is received. --> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
<permission android:name="my_app_package.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 
<uses-permission android:name="my_app_package.permission.C2D_MESSAGE" /> 

Ngoài ra, bạn sẽ yêu cầu: com.google.android.c2dm.permission.SEND permission

Để biết thêm thông xin vui lòng khám phá thêm .. Hãy không hỏi util và trừ khi bạn khám phá những điều tốt.Referal Link

+0

cảm ơn Arpit Garg tôi đã làm điều đó. Nhưng tôi chỉ muốn gửi tin nhắn gcm từ thiết bị này sang thiết bị khác trực tiếp. sử dụng hardcoded Regid. tôi muốn loại bỏ máy chủ web hoặc servlet từ giao tiếp theo cách kéo. là nó có thể.? – Roodie

+0

@Roodie Trong mã cung cấp, không cần máy chủ web hoặc servlet. Chỉ cần cung cấp các điều khiển để gửi và nhận trong ứng dụng bằng cách sử dụng regid mã hóa cứng và khởi chạy ứng dụng trên cả hai thiết bị .. Bạn có thể có giao tiếp ở giữa như mong muốn. Nhưng hãy chắc chắn rằng đám mây là cần thiết để hòa giải sẽ chỉ có Mây .. –

+0

Nó không hiệu quả đối với tôi. có bất kỳ quyền cụ thể nào cho phía người gửi được mô tả trong manifst không? u đã thử? – Roodie

Các vấn đề liên quan