我正在使用gcm执行推送通知,该通知是在sdk中编写的,开发人员需要将我的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

最佳答案

使用您的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" />

07-24 09:45
查看更多