コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
namespace AppName.Services
{
//DependencyServiceから利用する
public interface IFacebookService
{
//SDKを初期化する(Android用)
void Initialize();
//Facebookを開く
bool CanInvite(string appLinkURL, string previewImageURL);
}
}
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myappname</string>
<string>fb999999999999999</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<!--Facebook v4.5-->
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
<!--Facebook v4.6 FBSDKMessengerShareKit
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>-->
<!--Facebook v4.6 or lator
<string>fbapi</string>
<string>fbauth2</string>-->
<string>fb-messenger-api</string>
<string>fbshareextension</string>
</array>
<dict>
using Facebook.ShareKit;
[assembly: Dependency(typeof(FacebookService))]
namespace AppName.iOS.Services
{
public class FacebookService : IFacebookService
{
public void Initialize()
{
//Android用
}
public bool CanInvite(string appLinkURL, string previewImageURL)
{
var fromController = UIApplication.SharedApplication.KeyWindow.RootViewController;
var content = new AppInviteContent
{
AppLinkURL = new NSUrl(appLinkURL),
PreviewImageURL = new NSUrl(previewImageURL)
};
var dg = new MyAppInviteDialogDelegate();
var dialog = AppInviteDialog.Show(fromController, content, dg);
return dialog.CanShow;
}
}
public class MyAppInviteDialogDelegate : AppInviteDialogDelegate
{
public override void DidComplete(AppInviteDialog appInviteDialog, NSDictionary results)
{
//成功した場合
Console.WriteLine("AppInviteDialogDelegate.DidComplete:" + results?.ToString());
}
public override void DidFail(AppInviteDialog appInviteDialog, NSError error)
{
//失敗した場合
Console.WriteLine("AppInviteDialogDelegate.DidFail:" +
error?.LocalizedFailureReason + System.Environment.NewLine +
error?.LocalizedDescription);
}
}
}
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
Facebook.CoreKit.Profile.EnableUpdatesOnAccessTokenChange(true);
Facebook.CoreKit.Settings.AppID = "999999999999999"; //アプリID
Facebook.CoreKit.Settings.DisplayName = "AppName";
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
/// <summary>
/// アプリが再びアクティブになった場合
/// </summary>
/// <param name="uiApplication"></param>
public override void OnActivated(UIApplication uiApplication)
{
base.OnActivated(uiApplication);
Facebook.CoreKit.AppEvents.ActivateApp();
}
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="AppName" android:icon="@drawable/icon">
<!-- Facebook Invite -->
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_appId" />
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
</application>
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<string name="app_name">AppName</string>
<string name="facebook_appId">999999999999999</string>
</resources>
using Xamarin.Forms;
using Xamarin.Facebook;
using Xamarin.Facebook.Share.Widget;
using Xamarin.Facebook.Share.Model;
[assembly: Dependency(typeof(FacebookService))]
namespace AppName.Droid.Services
{
public class FacebookService : IFacebookService
{
public void Initialize()
{
//SDKの初期化
if (!FacebookSdk.IsInitialized)
{
FacebookSdk.SdkInitialize(Forms.Context);
}
}
public bool CanInvite(string appLinkURL, string previewImageURL)
{
if (AppInviteDialog.CanShow())
{
var activity = Forms.Context as Activity;
var content = new AppInviteContent.Builder()
.SetApplinkUrl(appLinkURL)
.SetPreviewImageUrl(previewImageURL)
.Build() as AppInviteContent;
AppInviteDialog.Show(activity, content);
return true;
}
return false;
}
}
}
using AppName.Services;
using Xamarin.Forms;
public class TestPage : ContentPage
{
public TestPage()
{
//Android用のSDKを初期化する
DependencyService.Get<IFacebookService>().Initialize();
}
async void OnInviteClick(object sender, EventArgs e)
{
bool canInvite = DependencyService.Get<IFacebookService>().CanInvite(
@"https://fb.me/999999999999999", //手順2-1で取得したURL
@"http://表示したい画像のURL/");
}
}
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。