8

我在演示应用程序中实现了 Facebook 应用程序邀请。它工作正常,但没有收到通知。

我已经在我的问题中添加了所有细节,现在谁能告诉我我的代码中有什么问题以及我应该怎么做才能解决这个问题。我已经创建了测试用户来测试这个应用程序。

此代码工作正常,它启动一个对话框,显示朋友列表,还显示应用邀请已发送,但是当我在朋友帐户中检查它时,它没有显示任何通知。

我的 Info.plist 文件

我认为我在 URL 类型(URL 方案)下的 info.plsit 中有错误。我已经写了 action ,它是方法的名称,但我不知道我应该在这个专栏中写什么。

在此处输入图像描述

Appdelegate.m

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url   sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication];
    if ([parsedUrl appLinkData])
    {
        NSURL *targetUrl = [parsedUrl targetURL];
        [[[UIAlertView alloc] initWithTitle:@"Received link:"
                                    message:[targetUrl absoluteString]
                                   delegate:nil
                          cancelButtonTitle:@"OK"
                          otherButtonTitles:nil] show];
    }
        return YES; }

视图控制器.h

appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results调用时结果为空

- (IBAction)action:(UIButton *)sender
{

    FBSDKAppInviteContent *content =[[FBSDKAppInviteContent alloc] init];
    content.appLinkURL = [NSURL URLWithString:@"https://fb.me/*****************"];

    [FBSDKAppInviteDialog showFromViewController:self withContent:content delegate:self];
}

 - (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results
{
    NSLog(@" result %@",results);
}
- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didFailWithError:(NSError *)error
{
    NSLog(@"error =  %@", error);
    NSString *message = error.userInfo[FBSDKErrorLocalizedDescriptionKey] ?:
    @"There was a problem sending the invite, please try again later.";
    NSString *title = error.userInfo[FBSDKErrorLocalizedTitleKey] ?: @"Oops!";

    [[[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];

}
4

4 回答 4

15

尝试在您的AppDelegate.m:

在顶部导入:

#import <FBSDKCoreKit/FBSDKCoreKit.h>

并将其用于应用程序: openurl: sourceapplication: annotation

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
    if (!url) {
        return NO;
    }

    [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];

    return YES;
}

这使用 Facebook SDK 来处理 openurls 而不是自定义处理程序。

这将触发您定义的委托方法,然后您可以继续提醒用户或做任何您想做的事情。

此外,您info.plistURLSchemes值需要与您在 Facebook 输入“带有自定义方案的 URL”中的值相同。例如,如果您myapp://在 Facebook 对话中有“带有自定义方案的 URL”,那么您URLScheme将是myapp(您目前拥有的地方action

所做的只是让 Safari 知道,如果您myapp://在 URL 栏中调用,那么它应该会打开您的应用程序。myapp://除非您将参数传递给应用程序,否则您在 Facebook 屏幕之后不需要任何内容​​。

确保在您的开发者设置 ( https://developers.facebook.com/apps/{app-id}/settings/ ) 中添加了 iOS 平台,并设置了捆绑包 ID、iPhone 商店 ID 和 iPad店铺标识。

Facebook 开发者页面上我的应用程序的屏幕截图

您可以为 iPhone 和 iPad 应用程序 ID 使用任何应用程序 ID(来自 iTunes Connect 的应用程序 ID,实际上称为“Apple id”)(只需确保它是来自应用程序商店的有效应用程序 ID,名称不必匹配)并使用您的应用程序的捆绑包 ID。iPhone 和 iPad id 的编号可以相同。这一点至关重要,因为 Facebook 不会在没有此功能的情况下向用户发送通知,因为如果用户没有下载应用程序,它不知道将用户发送到哪里。将其放入并发送另一个通知,它应该可以工作。

使用 Facebook 的“快速入门”创建应用邀请链接时,请确保您在 iOS 框中正确设置了参数。以下是设置应该是什么样子的示例。这是看起来像的链接https://fb.me/634411166661512

fb 应用链接的示例设置

“具有自定义方案的 URL”需要与您的任何内容相同- 如果您在您的下方info.plist使用上面的答案,您会将“myapp://”放在 Facebook“具有自定义方案的 URL”中。应用名称可以是任何名称,仅用于显示。虽然它说“App Store Id”是可选的,但它是必需的。确保在此处使用与上面设置“iPad Store Id”和“iPhone Store Id”相同的一个。如果他们没有您的应用程序,这会告诉 Apple 将用户推送到 iTunes 商店。myappinfo.plistURLSchemes

于 2015-11-19T15:44:11.513 回答
3

转到开发人员仪表板。选择您的应用。添加平台“Facebook画布”,设置画布网址。希望它有效

于 2016-04-05T06:55:52.373 回答
0

App Invites 仅适用于移动平台。我也面临着在 Simulator to Web 上测试的同样问题。希望这会有所帮助:)

在此处输入图像描述

于 2016-12-28T12:15:26.083 回答
0

要获得工作通知,请转到设置并添加所需的平台。如果您想在 iOS 本机应用程序上获得通知,而不是为“Android”添加“iOS”平台,为 Web 添加“Facebook Canvas”。为每个平台添加所需的数据,然后尝试。希望它会奏效。

请记住:对于 iOS 和 Android 原生应用,您必须添加实时应用的数据 :)

于 2016-05-11T09:04:42.057 回答