C2DM / Phonegap插件?

时间:2012-01-16 09:53:04

标签: android jquery-mobile cordova android-c2dm

我想将Push消息添加到我的Phonegap Android应用程序中,并相信C2DM是实现这项工作的最佳方式 - 可以指出我正确的方向来设置它吗? 是否有插件或教程来帮助解决这个问题?

另外 - 我真的需要一个插件 - 是否有可能以传统的Android方式将C2dm添加到我的应用程序而不会弄乱我的手机设置?

2 个答案:

答案 0 :(得分:4)

是的,C2DM是Android Push解决方案。在https://github.com/awysocki/C2DM-PhoneGap上,您可以找到一个示例实现。

com.google命名空间中的文件必须保持不变,它们来自会话“Google IO会话概述:Android + App Engine:开发人员的梦想组合”,请参阅http://bradabrams.com/2011/05/google-io-session-overview-android-app-engine-a-developers-dream-combination/

所以这些是您应该执行的步骤:

  1. 将3个com.google类添加到项目中
  2. 创建一个名为C2DMReceiver(命名约定)的类,它继承自C2DMBaseReceiver并实现必要的抽象事件
  3. 设置AndroidManifest.xml
  4. AndroidManifest看起来像

    <!-- set up an own permission to secure our C2DM mesages -->
    <permission android:name="your.namespace.permission.C2D_MESSAGE"
                android:protectionLevel="signature" />
    
    <!-- List of permission -->
    <uses-permission android:name="your.namespace.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    
    <application ..>
    
        <!-- Your implementation of the class C2DMReceiver, base class is Googles C2DMBaseReceiver -->
        <service android:name=".C2DMReceiver" />
    
        <!-- Googles broadcast receiver, it delegates to your.namespace.C2DMReceiver -->
        <receiver
                android:name="com.google.android.c2dm.C2DMBroadcastReceiver"
                android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="your.namespace" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="your.namespace" />
            </intent-filter>
        </receiver>
    </application>
    

    如果您在模拟器上收到错误“E / CSE通知(401):注册错误ACCOUNT_MISSING”,则必须在模拟器中添加Google帐户。

    对于你的第二个问题:这取决于你想做什么。当您收到消息并且您只想显示通知以便用户能够启动您的应用程序时,您就不需要Phonegap插件。在这种情况下,您可以解决java中的所有问题。

答案 1 :(得分:1)

如果您得到这个答案,请注意C2DM已过时,现在您必须使用GCM。

此外,还有一个官方的PhoneGap插件,支持Android和iPhone的通知。查看https://github.com/phonegap-build/PushPlugin

上的PushPlugin