【问题标题】:C2DM / Phonegap plugin?C2DM / Phonegap 插件?
【发布时间】:2012-01-16 09:53:04
【问题描述】:

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

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

【问题讨论】:

    标签: android jquery-mobile cordova android-c2dm


    【解决方案1】:

    是的,C2DM 是 Android 推送解决方案。在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

    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 Notifications(401): Registration error ACCOUNT_MISSING”,则必须将 Google 帐户添加到您的模拟器。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 2017-10-01
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多