3

SDK で記述された GCM を使用してプッシュ通知を行っています。開発者は SDK をライブラリ プロジェクトとして追加する必要があります。SDK は開発者からのコンテキストを使用して登録 ID を作成しますが、ID を使用してサーバーからプッシュすると、実際、受信者クラスが呼び出されていないため、通知を受信しません

SDK のマニフェスト ファイルには

   <receiver
        android:name=".GcmBroadcastReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.mysdk" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmIntentService" /> 

許可は持っています

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.WAKE_LOCK" />
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
 <permission
    android:name="com.mysdk.permission.C2D_MESSAGE"
    />

<uses-permission android:name="com.mysdk.permission.C2D_MESSAGE" />

SDK をライブラリ ファイルとして持つアプリのマニフェスト

      <receiver
        android:name="com.mysdk.GcmBroadcastReceiver" 
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>

            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.mysdk" />
        </intent-filter>
    </receiver>
    <service android:name="com.mysdk.GcmIntentService" />

許可は持っています

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
    android:name="com.mysdk.permission.C2D_MESSAGE"
    />

<uses-permission android:name="com.mysdk.permission.C2D_MESSAGE" />

何が間違っていたのか誰でも提案できますか、これは可能ですか、つまりSDKから通知を送信します

4

1 に答える 1

1

SDK を使用するアプリはcom.mysdk、GCM のアクセス許可とブロードキャスト レシーバーのインテント フィルターのカテゴリに使用しないでください。代わりに、独自のパッケージ名を使用する必要があります。

以下に、アプリのマニフェストで行う必要がある変更を示します。

<receiver
    android:name="com.mysdk.GcmBroadcastReceiver" 
    android:exported="true"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>

        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME" />
    </intent-filter>
</receiver>

<service android:name="com.mysdk.GcmIntentService" />

<permission android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME.permission.C2D_MESSAGE"/>

<uses-permission android:name="CHANGE_TO_YOUR_APPS_PACKAGE_NAME.permission.C2D_MESSAGE" />
于 2013-09-24T16:05:44.193 に答える