我正在使用在 SDK 中编写的 GCM 进行推送通知,开发人员需要将我的 SDK 添加为库项目,我的 SDK 使用开发人员的上下文并创建注册 ID,但是当我使用ID 我无法收到任何通知,事实上我的接收器类未被调用
SDK中的Manifest文件有
<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 作为库文件的应用程序 list
<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 的应用不应将 com.mysdk
用于 GCM 权限和广播接收器 intent-filter 的类别。相反,它应该使用自己的包名称。
下面我标记了您应该在应用 list 中进行的更改:
<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" />
关于android - 无法访问外部库中存在的 WakefulBroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985704/