我是新來的android,我有問題在實施推送通知。c2dm返回應用程序ID爲空
正如我讀過的教程中所述,我在c2dm中註冊並獲得了Auth令牌,然後在包含xxxx的UrbanAirShip中註冊,獲得了應用密鑰和祕密。
我的項目團隊最初使用API 2.1,那時候我通過氦氣傳輸獲得AppId,無論是在設備還是仿真器中。
然後我們將API改爲2.2,那時我再次在c2dm中註冊了另一個發件人ID,獲得了Auth令牌,並且又在UrbanAirShip上註冊了新賬戶, 得到了密鑰和祕密。
對於通過C2DM運輸第一幾次嘗試,我得到的AppId,然後如下表明我只拿到了空,無論是在設備和有錯誤的模擬器,
我不知道是什麼出了問題,是否改變API級別,或在c2dm中註冊多個發件人ID,或者在同一個包名稱中進行多次註冊或在UrbanAirShip中註冊多個或多次卸載。 我已經添加了Manifest文件和Application的oncreate方法,請指導我取回AppId。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxxx"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="com.android.vending.BILLING" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- REQUIRED for C2DM -->
<!-- Only this application can receive the messages and registration result -->
<permission android:name="xxxx" android:protectionLevel="signature" />
<uses-permission android:name="xxxx.permission.C2D_MESSAGE" />
<!-- This app has permission to register and receive message -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="10" />
<application
android:icon="@drawable/logo"
android:label="@string/app_name"
android:name="xx"
android:debuggable="true"
android:allowClearUserData="true"
android:enabled="true" >
<activity
android:label="@string/app_name"
android:name=".activities.SplashActivity"
android:screenOrientation="portrait" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
....
<!-- REQUIRED -->
<receiver android:name="com.urbanairship.CoreReceiver">
<!-- REQUIRED IntentFilter - For Helium and Hybrid -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
<!-- REQUIRED for C2DM and Hybrid -->
<receiver android:name="com.urbanairship.push.c2dm.C2DMPushReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual message -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="xxxx" />
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="xxxx" />
</intent-filter>
</receiver>
<!-- REQUIRED -->
<!-- The 'android:process' parameter is optional. Set it to a value starting
with a colon (:) to make it run in a separate,
private process -->
<service android:name="com.urbanairship.push.PushService"
android:process=":com.urbanairship.push.process"/>
<!-- OPTIONAL, if you want to receive push, push opened and registration completed intents -->
<receiver android:name="xxx.push_notifications.IntentReceiver" />
<service android:name="xxx.inapp.BillingService" />
<receiver android:name="xxx.inapp.BillingReceiver" >
<intent-filter >
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
</application>
</manifest>
指這個http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html – 2012-04-26 04:34:21
堅持一秒鐘... – Will 2012-05-03 13:46:16