1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. tau31535, 29.11.2011 #1
    tau31535

    tau31535 Threadstarter Junior Mitglied

    Hallo,

    da bin ich mal wieder :)
    Ich habe gestern versucht meine APP C2DM tauglich zu machen.
    Jedoch stürtzt Sie ab.

    Meine Manifest:

    PHP:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.BTCar2"
          android:versionCode="1"
          android:versionName="1.0">
       <permission android:name="com.BTCar2.permission.C2D_MESSAGE" android:protectionLevel="signature" />
       <uses-permission android:name="com.BTCar2.permission.C2D_MESSAGE" />

       <!-- This app has permission to register and receive message -->
       <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
       <uses-permission android:name="android.permission.INTERNET" />
          
          
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.CAMERA" />
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
     <uses-permission android:name="android.permission.FLASHLIGHT" />
     


        <application android:icon="@drawable/icon" android:label="@string/app_name">
        
                <activity android:name=".BTCar2"
                      android:label="@string/app_name"
                      android:windowSoftInputMode="stateHidden"
                      android:screenOrientation="portrait" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <service android:name=".C2DMReceiver" />
            <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
                  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <category android:name="com.BTCar2" />
    </intent-filter>
    <intent-filter>
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="com.BTCar2" />
    </intent-filter>
    </receiver>

        </application>
    </manifest>
    Registration mit einem Button verbunden

    PHP:
    public void c2dmreg() {
        
        
    Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
        
    registrationIntent.putExtra("app"PendingIntent.getBroadcast(this0, new Intent(), 0)); // boilerplate
        
    registrationIntent.putExtra("sender""Meine Emailadresse");
        
    startService(registrationIntent);
        
        
    Log.e(TAG"c2dmreg");
    und dann habe ich noch das bei mir drinne stehen
    PHP:
    public void onReceive(Context contextIntent intent) {
        if (
    intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) {
            
    Log.w("C2DM""Received registration ID");
            
    handleRegistration(contextintent);
        } else if (
    intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
            
    Log.w("C2DM""Received registration ID");
            
    //handleMessage(context, intent);
         
    }
     }

    private 
    void handleRegistration(Context contextIntent intent) {
        
    String registration intent.getStringExtra("registration_id"); 
        if (
    intent.getStringExtra("error") != null) {
            
    Log.w("C2DM""error");
        } else if (
    intent.getStringExtra("unregistered") != null) {
            
    // unregistration done, new messages from the authorized sender will be rejected
        
    } else if (registration != null) {
            
    Log.w("C2DM""ok");
           
    // Send the registration ID to the 3rd party site that is sending the messages.
           // This should be done in a separate thread.
           // When done, remember that all registration is done. 
        
    }
    }
    1. Muss ich in App & Sender was eintragen?
    2. welche E-Mailadresse gehört in das Feld Meine Emailadresse
    3. handleMessage(context, intent); was soll ich damit machen?

    4. Meine App Crashed beim aufrufen von public void c2dmreg()

    5. Axo mein package com.BTCar2 habe ich auf http://code.google.com/android/c2dm/signup.html regestriert und habe eine Bestätigung bekommen. Kann ich eigentlich irgendwo einsehen welche package C2DM regestriert sind z.B. von mir?


    Ich hoffe ihr könnt mir helfen:razz:
     
    Zuletzt bearbeitet: 29.11.2011
  2. HerrHofrat, 30.11.2011 #2
    HerrHofrat

    HerrHofrat Android-Hilfe.de Mitglied

    Hallo!

    Als Sender Intent musst du deine E-Mail Adresse angeben, mit der du dein Package beim C2DM registriert hast. Das Feld heißt "Role (sender) account email". Das heißt nichts anderes, als das du nur von dem Google Konto C2DM Messages zu deinem App schicken darfst.

    Zu deinem Manifest: Du Musst deine Receiver Activity nicht als Service definieren, sondern als Receiver! Ich hab meine noch dazu vom BroadcastReceiver abgeleitet.

    Code:
    [COLOR=#000000]
    <receiver android:name=".C2DMReceiver" 
              android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.BTCar2" />
        </intent-filter>
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.BTCar2" />
        </intent-filter>
    </receiver>[/COLOR]
    
    Probier mal das Manifest so umzuschreiben. Ich denke das dein App deswegen abstürzt. Weiters musst du dir noch ein Handling überlegen, um die RegistrationID auf deinen Server zu bekommen. Ich hab mir dazu ein php File erstellt, dem die RegistrationID per HTTP Post übergeben wird, und diese insertiert mir dann die ID in meine Backend Datenbank.


    Am Besten du schaust dir mal dieses Tutorial an. Im handleMessage(context, intent); musst du einfach nur aus dem intent deinen Payload String auslesen und dann wie gewünscht ausgeben.


    LG
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Android app selber entwickeln mit Bluetooth Android App Entwicklung 13.10.2017
[ERLEDIGET] App über href starten Android App Entwicklung 28.09.2017
[OFFEN] Kostenpflichtige App für Beta-Test hochladen Android App Entwicklung 13.09.2017
[OFFEN] App startet nicht... Android App Entwicklung 10.09.2017
[OFFEN] Sind Notifications in einer Webview App möglich? Android App Entwicklung 10.09.2017
[OFFEN] Möchte eine App für Entrümpelungen entwickeln. Android App Entwicklung 08.09.2017
[ERLEDIGT] Alpha-Version meiner App nicht mit S8 kompatibel Android App Entwicklung 06.09.2017
[ERLEDIGT] Verbindung zu MS SQL DB von App aus möglich? Android App Entwicklung 05.09.2017
[OFFEN] App schließt nach Öffnen sofort Android App Entwicklung 04.09.2017
[ERLEDIGT] MIT APP Inventor paralleler Tastendruck Android App Entwicklung 23.08.2017
Du betrachtest das Thema "C2DM APP Crash" im Forum "Android App Entwicklung",