无法将 AdMob 添加到我的项目:我的项目是 ReactNative,AdMob 需要 JAVA

Can't add AdMob to my project: My project is ReactNative and AdMob needs JAVA

我正在尝试向我的应用添加广告。 关注 this guide, I've ran into trouble with "Initialize the Mobile Ads SDK" 因为它要我导入一些 Java 代码:

package ...
import ...
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
    }
}

我有一个 Java脚本项目:

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

import Home from "./screens/home"
import heads from "./screens/heads"
import tails from "./screens/tails"

//problems start from here. This is the copied text from https://developers.google.com/admob/android/quick-start?hl=es#import_the_mobile_ads_sdk
package ...
import ...
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
    }
}
//this is where they end
const Stack = createStackNavigator();


function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="Home">
        <Stack.Screen 
        name="Home" 
        component={Home}
        options={{headerShown: false}} />
        <Stack.Screen 
        name="tails" 
        component={tails}
        options={{headerShown: false}} />
        <Stack.Screen 
        name="heads" 
        component={heads}
        options={{headerShown: false}} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

const Stack = createStackNavigator();

Errors

这是尝试访问应用程序时的输出:

App.js: Unexpected reserved word 'package' (10:0)

   8 | 
   9 | //problems start from here. This is the copied text from https://developers.google.com/admob/android/quick-start?hl=es#import_the_mobile_ads_sdk
> 10 | package ...
     | ^
  11 | import ...
  12 | import com.google.android.gms.ads.MobileAds;
  13 | import com.google.android.gms.ads.initialization.InitializationStatus;

我不确定是否应该将 JAVA 转换为 JAVASCRIPT 以达到此目的。我在互联网上没有找到任何关于它的东西,据我所知,也没有编程语言的“翻译器”。

我一无所知。我已经用 KOTLIN 尝试过同样的事情,但它也失败了。我不想添加 KOTLIN 代码和错误,因为它说我的 post 主要是代码(当然是,但我不知道从这里往哪个方向走) 谢谢!

好的,看来您正试图将 Java 和 Java 脚本代码放在同一个文件中,这是行不通的。

在您包含的 javascript 项目片段中,整个部分:

//problems start from here. This is the copied text from https://developers.google.com/admob/android/quick-start?hl=es#import_the_mobile_ads_sdk
package ...
import ...
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
    }
}
//this is where they end

需要在单独的 Java 文件中。

现在,我看到您正在使用 react-native。我需要知道您使用的是标准 react-native 还是 expo 管理的项目。

如果您使用的是 expo 管理的项目,已经有一个为 admob 制作的软件包,只需按照此处文档中的说明进行操作:https://docs.expo.io/versions/v39.0.0/sdk/admob/

如果你只是使用 React Native,它会变得相当复杂。您提供的文档旨在用于 Java / Kotlin 本机开发,而不是通过 React 进行本机开发,因此您很难使用该文档中的代码使其正常工作。这个 link 应该可以帮助你让它为 react-native 工作:https://dev.to/srajesh636/how-to-show-ads-in-react-native-lcj

*请注意,在 google 提供的随附文档中,您会看到 package ...import ...,您需要填写实际的包名称,以及任何其他class.

所需的导入

希望这对您的问题有所帮助,如果还有任何问题,请告诉我。