0

我正在尝试使用 google GCM 注册一个 Android 应用程序,它似乎在 eclipse 中导致错误。有什么帮助吗?

一旦我尝试检查它是否已注册,它就会爆炸。它编译得很好,我添加了 import com.google.android.gcm.GCMRegistrar; 我认为这更多是因为我不了解 java 和 eclipse,而不是 GCM,但谁知道

我添加了要忽略的步骤过滤器com.google.android.gcm.*

并且我确保将 gdm.jar 库与我的项目和构建路径一起包含在我的本地 libs 文件夹中。

如果我单步执行代码,当我尝试跨过GCMRegistrar引用的第一行并说“找不到源”时,它会停止。GCMRegistrar如果我没有设置断点,它仍然会在它命中并说“找不到源”时停止。

private void checkRegistration(){
    try{
            if (!GCMRegistrar.isRegistered(getApplicationContext())) {
                 // Automatically registers application on startup.
                GCMRegistrar.register(getApplicationContext(), Utilities.GCM_SENDER_ID);
            } else {
                final String regId = GCMRegistrar.getRegistrationId(getApplicationContext());
                if(regId.equals("")){
                    GCMRegistrar.register(getApplicationContext(), Utilities.GCM_SENDER_ID);
                }else{
                // Device is already registered on GCM

                    if(regId == Utilities.getGcmRegKey(this)){

                    }else{
                        pwClient.updateGCMRef("add", regId, Utilities.getApiKey(this), Utilities.getDeviceId(this));
                        Utilities.setGcmRegKey(this, regId);
                    }
                }
            }
        }catch(Exception ex){
            Log.e("PW", "register error: " + ex.getMessage());
        }
    }
}
4

2 回答 2

3

我不得不停止我的 GCM 项目,但我至少设法获得了 GCM 客户端的源代码,所以它可能会帮助你调试一下。从 R17 SDK 工具开始,谷歌已经让附加源代码和 javadocs 成为一种痛苦,但它可以做到。

在您找到 gcm.jar 的同一个“dist”目录中是另一个 jar gcm-src.jar - 这就是源代码。因此,在您的 libs 目录中创建一个名为 gcm.jar.properties 的新文件。

它应该包含一行

src=C:\\dev\\tools\\android-sdk-windows4.1\\extras\\google\\gcm\\gcm-client\\dist\\gcm-src.jar

(编辑此以引用您的 SDK 安装,如果您在 Linux 上,请将 \\s 更改为 /s)

现在关闭您的项目并重新打开它,否则它将无法正常工作,天知道为什么!

您现在应该有“悬停在”javadoc 类型的弹出窗口,并且能够进入 GCMRegistrar 静态方法。至于你的代码为什么会爆炸,也许这会让你更接近。

顺便说一句,我基于我的项目的示例代码在注册开始时有这两行

// Check that the device supports GCM (should be in a try / catch)
GCMRegistrar.checkDevice(this);
// Check the manifest to be sure this app has all the required permissions.
GCMRegistrar.checkManifest(this);

他们可能会对事情有所了解

于 2012-10-04T14:26:47.703 回答
0

根据here,GCM需要Android 2.2或更高版本,首先检查你的manifest sdk版本是否正确

其次,右键单击您的项目并选择Properties => Java Build Path => Libraries选项卡并确保 gcm.jar 存在于列表中

于 2012-10-07T07:07:21.630 回答