【问题标题】:Facebook AppInvite Android Studio Cannot resolve method show(Facebook AppInvite Android Studio 无法解析方法 show(
【发布时间】:2017-09-13 22:49:55
【问题描述】:

我正在开发一个带有 react native 的应用,但我需要合并一个原生模块来使用 Facebook AppInvite 让用户在我的应用上邀请朋友。

但是,我已经按照 react native 文档中的所有内容在 react native 中添加了本地模块(react native 和本地代码之间的链接有效),但是用 java 编写的本地模块不起作用。 https://facebook.github.io/react-native/docs/native-modules-android.html

package com.App.App;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;

import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.FacebookSdk;
import com.facebook.CallbackManager;
import com.facebook.FacebookException;
import com.facebook.share.model.AppInviteContent;
import com.facebook.share.widget.AppInviteDialog;
import android.support.v4.app.DialogFragment;

import java.util.Map;
import java.util.HashMap;

public class FacebookInviteModule extends ReactContextBaseJavaModule {

    //Cannot be modified since it use by reactnative
    public FacebookInviteModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    //Cannot be modified since it use by reactnative
    @Override
         public String getName() {
         return "FacebookInvite";
    }

    @ReactMethod

    public void showModule(){

        String appLinkUrl, previewImageUrl;

        appLinkUrl = "https://www.app.com/myapplink";
        previewImageUrl = "https://www.app.com/my_invite_image.jpg";

        if (AppInviteDialog.canShow()) {
            AppInviteContent content = new AppInviteContent.Builder()
                    .setApplinkUrl(appLinkUrl)
                    .setPreviewImageUrl(previewImageUrl)
                    .build();

            AppInviteDialog.show(this, content);
        }
    }
}

在函数 showModule() 中不能传递任何内容,因为它在 javascript 代码中用于显示原生组件,因为它在 react native 中是这样调用的:NativeModules.FacebookInvite.showModule();

对于函数showModule()中的代码,我使用的代码与Facebook官方文档中的代码完全相同:https://developers.facebook.com/docs/app-invites/android

但我得到一个错误: AppInviteDialog.show(this, content); 说“无法解析方法'show(com.App.App.FacebookInviteModule,com.facebook.share.model.AppInviteContent)”

我很了解 ReactNative,但我对 Java 了解不多,而且我不理解错误。 文件代码与 MainActivty 和 MainApplication 位于同一文件夹中。

所以如果有人知道我可以做些什么来使它工作,那就太好了:D

【问题讨论】:

    标签: android facebook android-studio react-native


    【解决方案1】:

    您不必编写本机组件。您可以使用官方 facebook 库来获取 App Invites。 react-native-fbsdk 有AppInvite Component。它没有很好的文档记录,但在代码文件中几乎包含了您需要的所有解释。检查源代码,你可以很容易地弄清楚。

    示例

    import { AppInviteDialog } from 'react-native-fbsdk';
    
    AppInviteDialog.canShow().then(()=> {
        AppInviteDialog.show({
            previewImageUrl,
            applinkUrl,
            promotionCode,
            promotionText
        }).then(() => { ... });
    }).catch(()=> { console.error('App invite can't show!'); });
    

    【讨论】:

    • 非常感谢本尼根!有效 !很遗憾 de react-native-fbsdk 有很好的文档记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多