如何导入发件人类 - Java App Engine
Posted
技术标签:
【中文标题】如何导入发件人类 - Java App Engine【英文标题】:How to import Sender Class - Java App Engine 【发布时间】:2013-08-25 17:05:28 【问题描述】:我正在尝试在我的网络应用程序中实现 Google 云消息传递。 但是当我写这个时:
Sender sender = new Sender("My API Key");
然后eclipse在按ctrl+shift+o时不会导入任何东西。
如何使用这个类?
http://developer.android.com/reference/com/google/android/gcm/server/Sender.html
【问题讨论】:
【参考方案1】:在我的 java 项目中使用 Maven(由于我无法从之前的回复中找到引用),这就是我必须做的事情(如 this github GCM repo for maven 中所述)。
将此存储库添加到您的 maven pom.xml:
<repositories>
. . .
<repository>
<id>gcm-server-repository</id>
<url>https://raw.githubusercontent.com/slorber/gcm-server-repository/master/releases/</url>
</repository>
</repositories>
然后添加这个依赖:
<dependencies>
. . .
<dependency>
<groupId>com.google.android.gcm</groupId>
<artifactId>gcm-server</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
然后将其导入您的班级:
import com.google.android.gcm.server.*;
要使用它,在 android GCM 服务器实现文档中有一个小例子 here。
更新
由于示例链接已损坏,我在这里留下一个简短的示例,在该示例中我使用 2 个业务类别和 2 个(或更多)模型来管理响应和消息:
Sender.java
public MulticastResult SendMessage(YourMessageObject yourMsg) throws IOException
Sender sender = new Sender(gcmApiKey); // A string
String msg = yourMsg.getMessage();
String msgTxt = (msg.isEmpty()) ? "This is a test" : msg ;
Message message = new Message.Builder()
.addData("title", "My title")
.addData("message", msgTxt)
.addData("msgCount", "3")
.addData("jsonEvent", yourMsg.getEventJson())
.build();
if(devices.isEmpty())
return null;
return sender.send(message, devices, 5);
GCMREsponseValidator.java
public GCMResponseResume validateResponse(MulticastResult multicastResult, List<GCMClient> devices)
String response;
response = "multicast: " + multicastResult.toString();
if(multicastResult.getMulticastId() != 0)
responseResume = new GCMResponseResume(multicastResult);
// We check the results
int index = 0;
List<Result> results = multicastResult.getResults();
for(final Result result : results)
// Si responde exitosamente
if(result.getMessageId() != null)
// If there is a canonical Id we replace the Id
String canonicalRegId = result.getCanonicalRegistrationId();
if (canonicalRegId != null)
response = response.concat("\nCanonical found: " + canonicalRegId);
response = response.concat("\n... updating: " + devices.get(index));
Optional<GCMClient> currentDevice = Optional.of(devices.get(index));
String updated = clientsDAO.updateRegId(currentDevice, canonicalRegId);
response = response.concat("\n... updated: " + updated);
responseResume.addUpdatedIdsTotal(Integer.parseInt(updated));
// If not a successful result
else
String error = result.getErrorCodeName();
// Y tiene error de no registrado, borramos el id correspondiente
if (error.equals(Constants.ERROR_NOT_REGISTERED))
String notRegisteredId = devices.get(index).getRegisterId();
response = response.concat("\nNot Registered found: " + notRegisteredId);
response = response.concat("\n... deleting: " + notRegisteredId);
int removed = clientsDAO.removeByRegId(notRegisteredId);
response = response.concat("\n... deleted:" + Integer.toString(removed));
responseResume.addDeletedIdsTotal(removed);
index++;
response = response.concat("\nResults: " + results.toString());
return responseResume;
resonseResume 是这个模型: GCMResponseMResume
public class GCMResponseResume
private MulticastResult multicastResult;
private int updatedCanonicalIdsTotal;
private int deletedIdsTotal;
【讨论】:
【参考方案2】:您应该将gcm-server.jar
(位于<Your Android SDK Dir>\extras\google\gcm\gcm-server\dist\gcm-server.jar
)添加到您的eclipse项目中。
您可以通过右键单击项目并选择Properties -> Java Build Path -> Libraries -> Add External JARs...
来完成此操作
【讨论】:
我无法在我的 android sdk 文件夹中找到 gcm-server.jar。 @omerjerk 您必须安装适用于 Android 库的 Google Cloud Messaging(转到 Android SDK 管理器 - 您会在 Extras 下的底部附近找到它)。 Deprecated 写在那里..这就是我没有安装它的原因。 @omerjerk 客户端库已弃用(尽管它仍然有效),但服务器库不是。 Extras 下没有 Google Cloud Messaging。我已经下载了 adt-bundle-windows-x86_64-20131030以上是关于如何导入发件人类 - Java App Engine的主要内容,如果未能解决你的问题,请参考以下文章
如何在python电子邮件脚本中的发件人地址之前添加发件人姓名