React-native-onesignal: Fehler in der Bibliothek der Google Play-Dienste

Erstellt am 8. Feb. 2018  ·  35Kommentare  ·  Quelle: OneSignal/react-native-onesignal

Hallo,

Ich kann meine App anscheinend nicht mit OneSignal verbinden. Die App wurde erfolgreich kompiliert, empfängt jedoch keine Benachrichtigungen.

Wenn ich in der Verwaltung zu Users/All Users gehe, sehe ich eine Verbindung, jedoch mit der Fehlermeldung Google Play services library initialization error. Check for conflicting plugins and make sure "com.google.android.gms.version" is in your AndroidManifest.xml. Check the logcat for more details. .
Ich habe die AndroidManifest.xml in android/app/build/intermediates/manifests/full/debug überprüft und kann dort die com.google.android.gms.version Metadaten sehen.

Irgendwelche Vorschläge, wie man das beheben kann?

Hilfreichster Kommentar

Ja, so ist es. Ich stelle Screenshots zur Verfügung.

image

image

Alle 35 Kommentare

Wird Ihr Gerät im Dashboard von OneSignal angezeigt?

Ja, so ist es. Ich stelle Screenshots zur Verfügung.

image

image

Problem gelöst. Mir war nicht bewusst, dass die App für die Veröffentlichung erstellt werden muss. Gibt es eine Möglichkeit, dies in der Debug-Version zu testen?

Update - Ich habe herausgefunden, dass der wahre Grund darin liegt, dass ich keine Berechtigung zum Empfangen von Benachrichtigungen hatte. Für alle, die das gleiche Problem haben, stellen Sie sicher, dass Sie diese Zeile in Ihrem AndroidManifest.xml :

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

Ich habe das gleiche Problem und habe diesen Code hinzugefügt, funktioniert aber nicht :-( bitte helfen.

gleiches Problem

@LuckyLuky @wpyar @yaseralimardany eine Lösung? Danke..

Nun, die Lösung, die ich bereitgestellt habe, hat für mich funktioniert.

Ich schlage vor, die während des Builds generierte Debug-Version von AndroidManifest.xml überprüfen, ob sie die erforderliche Berechtigung enthält. Ansonsten weiß ich es nicht.

gleiches Problem

@LuckyLuky @yaseralimardany Ich habe das, in meiner Situation ist das das Problem mit der Build-Version ...
Nach dem Update von Gradle, gms, funktioniert es endlich.
Danke euch beiden.

Ich habe diesen Fehler in logcat:
E/OneSignal: Unbekannter Fehler beim Abrufen des FCM-Tokens
java.lang.NoSuchMethodError: Keine statische Methode isDeviceProtectedStorage(Landroid/content/Context;)Z in der Klasse Landroid/support/v4/content/ContextCompat; oder seine Superklassen (die Deklaration von 'android.support.v4.content.ContextCompat' erscheint in /data/app/com.motoshubapp-2/base.apk)
unter com.google.firebase.FirebaseApp.zza(Unbekannte Quelle)
unter com.google.firebase.FirebaseApp.initializeApp(Unbekannte Quelle)
at com.onesignal.PushRegistratorFCM.initFirebaseApp(PushRegistratorFCM.java:64)
at com.onesignal.PushRegistratorFCM.getToken(PushRegistratorFCM.java:50)
at com.onesignal.PushRegistratorAbstractGoogle.attemptRegistration(PushRegistratorAbstractGoogle.java:97)
at com.onesignal.PushRegistratorAbstractGoogle.access$100(PushRegistratorAbstractGoogle.java:37)
at com.onesignal.PushRegistratorAbstractGoogle$1.run(PushRegistratorAbstractGoogle.java:84)
bei java.lang.Thread.run(Thread.java:818)

und pushToken ist im realen Gerät null. Im onesignl-Projekt habe ich einen Fehler:

Fehler in der Bibliothek der Google Play-Dienste

gleiches Problem.

irgendwelche Ideen?

ich stehe auch vor dem gleichen Problem.

Ich habe das gleiche Problem

Sein Onesignal-Problem in neuerer Version. Ältere Version, in der Sie die App-ID in das Androidmanifest einfügen.

@yaseralimardany Ich

@LuckyLuky Ich hatte die Erlaubnis und bekomme dieses Problem immer noch.

@adirzoari Überprüfen Sie, ob diese Berechtigung in der Debug-/Release-Version von AndroidManifest.xml die während des Builds generiert wurde. Ansonsten weiß ich es leider nicht.

Vielleicht liegt es daran, dass ich Reactive-Native-Firebase habe und es nicht zusammenarbeitet?

gleiches Problem

Stellen Sie sicher, dass Sie über das neueste 3.2.4 OneSignal SDK verfügen, das am 21. Mai veröffentlicht wurde, und befolgen Sie diese neuen zusätzlichen Setup-Schritte zum Hinzufügen des Gradle-Plug-ins .

Ja, ich probiere ein neues Projekt aus und arbeite nicht :(

Gleiches Problem hier...ich verwende Onesignal mit xamarin

Ich habe hier gelöst....
Ich habe die Google Play Services Pakete und Onesignal nacheinander deinstalliert.
Danach habe ich onesignal installiert und alles funktioniert jetzt.
Ps: Schauen Sie in den nach dem Build erstellten Archiven nach und überprüfen Sie, ob die DLL für die Google Play-Dienste vorhanden ist.
P2s: Ich verwende Onesignal mit xamarin-Anwendungen.

@lahed , nur die Versionen von Ihrer compileSdkVersion 26, buildToolsVersion "26.0.0" müssen mit Ihrer Kompilierung "com.android. support:appcompat-v7 :26.0.0" übereinstimmen. Sehen Sie sich Ihre app/build.gradle an.

+1

prüfe #525

@lahed , ich

mein build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        maven { 
            url 'https://maven.google.com/' 
            name 'Google'
        } 
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven { 

            url "$rootDir/../node_modules/react-native/android"
        }
        maven { 
            url 'https://maven.google.com/' 
            name 'Google' 
        }
    }
}

app/build.gradle

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/' } // Gradle Plugin Portal 
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.10.0, 0.99.99]'
    }
}

apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

apply plugin: "com.android.application"

import com.android.build.OutputFile

/**
 * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
 * and bundleReleaseJsAndAssets).
 * These basically call `react-native bundle` with the correct arguments during the Android build
 * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
 * bundle directly from the development server. Below you can see all the possible configurations
 * and their defaults. If you decide to add a configuration block, make sure to add it before the
 * `apply from: "../../node_modules/react-native/react.gradle"` line.
 *
 * project.ext.react = [
 *   // the name of the generated asset file containing your JS bundle
 *   bundleAssetName: "index.android.bundle",
 *
 *   // the entry file for bundle generation
 *   entryFile: "index.android.js",
 *
 *   // whether to bundle JS and assets in debug mode
 *   bundleInDebug: false,
 *
 *   // whether to bundle JS and assets in release mode
 *   bundleInRelease: true,
 *
 *   // whether to bundle JS and assets in another build variant (if configured).
 *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
 *   // The configuration property can be in the following formats
 *   //         'bundleIn${productFlavor}${buildType}'
 *   //         'bundleIn${buildType}'
 *   // bundleInFreeDebug: true,
 *   // bundleInPaidRelease: true,
 *   // bundleInBeta: true,
 *
 *   // whether to disable dev mode in custom build variants (by default only disabled in release)
 *   // for example: to disable dev mode in the staging build type (if configured)
 *   devDisabledInStaging: true,
 *   // The configuration property can be in the following formats
 *   //         'devDisabledIn${productFlavor}${buildType}'
 *   //         'devDisabledIn${buildType}'
 *
 *   // the root of your project, i.e. where "package.json" lives
 *   root: "../../",
 *
 *   // where to put the JS bundle asset in debug mode
 *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
 *
 *   // where to put the JS bundle asset in release mode
 *   jsBundleDirRelease: "$buildDir/intermediates/assets/release",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in debug mode
 *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
 *
 *   // where to put drawable resources / React Native assets, e.g. the ones you use via
 *   // require('./image.png')), in release mode
 *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
 *
 *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means
 *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
 *   // date; if you have any other folders that you want to ignore for performance reasons (gradle
 *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
 *   // for example, you might want to remove it from here.
 *   inputExcludes: ["android/**", "ios/**"],
 *
 *   // override which node gets called and with what additional arguments
 *   nodeExecutableAndArgs: ["node"],
 *
 *   // supply additional arguments to the packager
 *   extraPackagerArgs: []
 * ]
 */

project.ext.react = [
    entryFile: "index.js"
]

apply from: "../../node_modules/react-native/react.gradle"

/**
 * Set this to true to create two separate APKs instead of one:
 *   - An APK that only works on ARM devices
 *   - An APK that only works on x86 devices
 * The advantage is the size of the APK is reduced by about 4MB.
 * Upload all the APKs to the Play Store and people will download
 * the correct one based on the CPU architecture of their device.
 */
def enableSeparateBuildPerCPUArchitecture = false

/**
 * Run Proguard to shrink the Java bytecode in release builds.
 */
def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"

    defaultConfig {
        applicationId "com.driverapp"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
         manifestPlaceholders = [onesignal_app_id: "7cb17176-6d1d-48cb-89aa-2df617123eba",
                                onesignal_google_project_number: "REMOTE"]
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    compile project(':react-native-mauron85-background-geolocation')
    compile project(':react-native-image-picker')
    compile project(':react-native-onesignal')
    compile project(':react-native-vector-icons')
    compile fileTree(dir: "libs", include: ["*.jar"])
    compile "com.android.support:appcompat-v7:26.0.1"
    compile "com.facebook.react:react-native:+"  // From node_modules
    compile(project(':react-native-maps')){
        exclude group: 'com.google.android.gms', module: 'play-services-base'
        exclude group: 'com.google.android.gms', module: 'play-services-maps'
    }
    compile 'com.google.android.gms:play-services-base:+'
    compile 'com.google.android.gms:play-services-maps:+'
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}


ein Signalcode

 OneSignal.init("7cb17176-6d1d-48cb-89aa-2df617123eba")
      OneSignal.setSubscription(true);
     // OneSignal.inFocusDisplaying(2);


      OneSignal.addEventListener('received', this.onReceived);
      OneSignal.addEventListener('opened', this.onOpened);
      OneSignal.addEventListener('ids', this.onIds);

      OneSignal.configure();  // if device info not working 


    }


    onReceived = (notification) => {
      console.log("Notification received: ", notification);
    }

    onOpened = (openResult) => {
      console.log('Message: ', openResult.notification.payload.body);
      console.log('Data: ', openResult.notification.payload.additionalData);
      console.log('isActive: ', openResult.notification.isAppInFocus);
      console.log('openResult: ', openResult);
    }

    onIds = (device)=> {
      console.log('Device info: ', device);
    }




    componentWillUnmount() {
      OneSignal.removeEventListener('received', this.onReceived);
      OneSignal.removeEventListener('opened', this.onOpened);
      OneSignal.removeEventListener('ids', this.onIds);

    }

androidmanifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.driverapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:windowSoftInputMode="adjustResize"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>
      <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
       <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="key"/>
    </application>

</manifest>

<activity ...> <service android:name="com.google.firebase.components.ComponentDiscoveryService" > <meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" android:value="com.google.firebase.components.ComponentRegistrar" /> </service> ... </activity>

Für mich geht das

Keine der hier vorgeschlagenen Lösungen hat bei mir funktioniert, ich verwende das Onesignal-Paket Version 2.6.0. Gibt es noch etwas, das es wert ist, ausprobiert zu werden? Danke

gleiches Problem hier, ich habe meine Konfigurationsdateien zu diesem anderen Problem gepostet:

https://github.com/OneSignal/react-native-onesignal/issues/525#issuecomment -668732429

Ich habe die app_id des onesignal in der App auf eine neue geändert und es hat funktioniert.

ich stehe auch vor dem gleichen Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen