2017-07-27 150 views
1

我试图使用react-native-push-notifications。它的所有工作在iOS上,但在android我得到未定义不是一个对象(评估RNPushnotification.getInitialNotifications)。react-native-push-notification未定义

这里是我的build.gradle

dependencies { 
    compile project(':react-native-push-notification') 
    compile project(':react-native-vector-icons') 
    compile fileTree(dir: "libs", include: ["*.jar"]) 
    compile "com.android.support:appcompat-v7:23.0.1" 
    compile "com.facebook.react:react-native:+" // From node_modules 
    compile project(':react-native-push-notification') 
    compile ('com.google.android.gms:play-services-gcm:8.1.0') { 
     force = true; 
    } 
} 

这是我的manifest资源配置文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tzawajna" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <permission 
     android:name="${applicationId}.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="com.tzawajna.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="22" /> 

    <application 
     android:name=".MainApplication" 
     android:allowBackup="true" 
     android:label="@string/app_name" 
     android:icon="@mipmap/ic_launcher" 
     android:theme="@style/AppTheme"> 
     <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
     android:windowSoftInputMode="adjustResize"> 
     <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" /> 
     <receiver 
      android:name="com.google.android.gms.gcm.GcmReceiver" 
      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.tzawajna" /> 
      </intent-filter> 
     </receiver> 

     <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" /> 

     <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
     </receiver> 

     <service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationRegistrationService"/> 
     <service 
      android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService" 
      android:exported="false" > 
      <intent-filter> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      </intent-filter> 
     </service> 

    </application> 

</manifest> 

这是我MainApplication.java

package (My app); 

import android.app.Application; 

import com.facebook.react.ReactApplication; 
import com.facebook.react.ReactNativeHost; 
import com.facebook.react.ReactPackage; 
import com.facebook.react.shell.MainReactPackage; 
import com.facebook.soloader.SoLoader; 

import java.util.Arrays; 
import java.util.List; 

public class MainApplication extends Application implements ReactApplication { 

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 
    @Override 
    public boolean getUseDeveloperSupport() { 
     return BuildConfig.DEBUG; 
    } 

    @Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
      new MainReactPackage() 
    ); 
    } 
    }; 

    @Override 
    public ReactNativeHost getReactNativeHost() { 
    return mReactNativeHost; 
    } 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    SoLoader.init(this, /* native exopackage */ false); 
    } 
} 

我用反应本地链接,告诉我那react-native-push-notifications已被链接。这就是为什么我没有添加任何东西到Java文件。我试图添加问码,然后debuger告诉我,这与javatojava错误

请帮助。

回答

1

我可以看到该包没有链接到您的java文件。

在你的第一个MainApplication.java文件添加

import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; 

也是新ReactNativePushNotificationPackage()添加到getPackages方法的返回值,所以它看起来是这样的:

@Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
      new MainReactPackage(), 
       new ReactNativePushNotificationPackage() 
    ); 
    } 
+0

我还要确保它在连接在Android手动安装说明中看到'.gradle'文件:https://github.com/zo0r/react-native-push-notification – MattyK14