我正在使用本机反应开发应用程序,但我需要使用本机模块来使用Facebook AppInvite让用户在我的应用上邀请朋友。
但是,我已经按照本机的文档中的所有内容来反应native(反应本机代码和本机代码之间的链接工作)添加本机模块,但用java编写的本机模块没有#&# 39;工作。 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
答案 0 :(得分:0)
您不必编写本机组件。您可以使用官方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!'); });