Đây là giải pháp của tôi cho các sự cố GCM với packageNameSuffix.
Vấn đề chính là tên quyền cần có hậu tố ".debug". Tôi đặt quyền đó để gỡ lỗi và phát hành tệp kê khai được hợp nhất thành tệp kê khai cuối cùng.
AndroidManfest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.experiment.myapplication"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<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" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
debug AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.experiment.myapplication">
<permission android:name="com.experiment.myapplication.debug.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.experiment.myapplication.debug.permission.C2D_MESSAGE" />
<application>
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.experiment.myapplication.debug" />
</intent-filter>
</receiver>
</application>
</manifest
>
phát hành Android Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.experiment.myapplication" >
<permission android:name="com.experiment.myapplication.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.experiment.myapplication.permission.C2D_MESSAGE" />
<application>
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.experiment.myapplication" />
</intent-filter>
</receiver>
</application>
</manifest>
Nguồn
2013-07-12 08:37:06
Khi sử dụng dịch vụ phát mới thay vì ứng dụng gcm-client cũ, bạn không cần quyền cụ thể theo gói. – deekay
Tôi đã cố gắng sử dụng giải pháp này với Urban Airship và nó không hoạt động như mong đợi. Tôi vẫn nhận được xung đột hợp nhất về tên gói. –
Điều này làm việc tuyệt vời cho tôi, Cảm ơn! – rharter