0

サーバーからAndroidアプリへのプッシュ通知を受け取りたい.Imは、Google Cloud Messaging for Android Library extras/google/samples/の例を使用しています。

これが私が進めた方法です:

最後にソースコードがあります

I サーバー部分:

1-gcm-demo-server\WebContent\WEB-INF\classes\api をブロックノートで開きます。APIキーで変更しました

2-gcm-demo-server ディレクトリのシェル ウィンドウで、「ant war」を実行します。

3-dist\gcm-demo.war ファイルを tomcat\webapps にコピーします。

4-この URL localhost:8080/gcm-demo を使用してブラウザでサーバーを開きます

II-アプリ部分:

CommonUtilities.java で、次のフィールドを変更しました。

1- static final String SERVER_URL = "localhost:8080/gcm-demo/home";(私のサーバーの URL)

2- static final String SENDER_ID = "876836784656"; (私のプロジェクト ID)

その後、サーバーを開きます。「デバイスが登録されていません」と表示され、アプリを実行すると、「デバイスは既にサーバーに登録されています」と表示されますが、サーバーを更新すると「デバイスが登録されていません」と表示されますが、サーバーには登録済みのデバイスと送信するボタンが表示される必要があります「プッシュ通知」 :cry: 助けてください!!

アプリ コード: - ソース コードとクラスはこちら

  • マニフェスト:

    <?xml version="1.0" encoding="utf-8"?>
    

    <!-- GCM requires Android SDK version 2.2 (API level 8) or above. -->
    <!-- The targetSdkVersion is optional, but it's always a good practice
         to target higher versions. -->
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/>
    
    <!-- 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" />
    
    <!--
     Creates a custom permission so only this app can receive its messages.
    
     NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,
           where PACKAGE is the application's package name.
    -->
    <permission
        android:name="com.google.android.gcm.demo.app.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission
        android:name="com.google.android.gcm.demo.app.permission.C2D_MESSAGE" />
    
    <!-- This app has permission to register and receive data message. -->
    <uses-permission
        android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <!-- Main activity. -->
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".DemoActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    
        <!--
          BroadcastReceiver that will receive intents from GCM
          services and handle them to the custom IntentService.
    
          The com.google.android.c2dm.permission.SEND permission is necessary
          so only GCM services can send data messages for the app.
        -->
        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <!-- Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <!-- Receives the registration id. -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
                <category android:name="com.google.android.gcm.demo.app" />
            </intent-filter>
        </receiver>
    
        <!--
          Application-specific subclass of GCMBaseIntentService that will
          handle received messages.
    
          By default, it must be named .GCMIntentService, unless the
          application uses a custom BroadcastReceiver that redefines its name.
        -->
        <service android:name=".GCMIntentService" />
    </application>
    

サーバーコード:

- すべてのクラスはこちら

このトピックをご覧になった皆様に感謝いたします :oops: .

4

1 に答える 1