Facebook App邀请通知不在ios中工作

Aar*_*Oza 8 objective-c facebook-graph-api ios facebook-ios-sdk facebook-invite-friends

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

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

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

我的Info.plist文件

我认为我在URL类型(URL Schemes)下的info.plsit中有错误.我写了一个动作,这是该方法的名称,但我不知道我应该在本专栏中写些什么.

在此输入图像描述

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; }
Run Code Online (Sandbox Code Playgroud)

ViewController.h

appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results调用时获得结果为null

- (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];

}
Run Code Online (Sandbox Code Playgroud)

Mar*_*dds 15

尝试在你的AppDelegate.m中使用它

在顶部导入:

#import <FBSDKCoreKit/FBSDKCoreKit.h>
Run Code Online (Sandbox Code Playgroud)

并将其用于应用程序: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;
}
Run Code Online (Sandbox Code Playgroud)

这使用facebook sdk来处理openurls而不是自定义处理程序.

这将触发您定义的委托方法,然后您可以继续提醒用户或执行您想要的任何操作.

同样在您的info.plist中,URLSchemes值必须与您在facebook输入'url with custom scheme'中的值相同.例如,如果您AppDelegate.m在Facebook对话框中有"自定义方案的网址",那么您的URLScheme将是info.plist(您目前拥有的URLSchemes)

所有这一切都让safari知道如果你在网址栏中调用'myapp://'那么它应该打开你的应用程序.除非您在app屏幕上的'myapp://'后面传递参数到app你不需要任何东西.

/ ----- SIDE NOTE ----- /

请确保您的开发人员设置(https://developers.facebook.com/apps/ {{APP-ID}}//设置)已添加的IOS平台,并建立了捆ID和iPhone商店ID和ipad商店ID.

我的Facebook开发者页面上的应用截图

您可以使用任何应用程序ID(来自itunes connect的那个,实际上称为'apple id')来获取iphone和ipad应用程序ID(只需确保它是应用程序商店中的有效ID,名称不必匹配)并使用您的包您的应用的ID.iphone和ipad id的编号可以相同.这是至关重要的,因为如果没有这个,Facebook不会向用户发送通知,因为如果用户没有下载应用程序,它就不知道将用户发送到何处.把它放入并发送另一个通知,它应该工作.

/ ---------- SIDE NOTE 2 ------------- /

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

fb app链接的示例设置

无论您在info.plist中拥有什么,"自定义方案的网址"都必须相同 - 使用上面的答案,如果您在info.plist中的"myapp"下面有URLSchemes,则将"myapp://"放入facebook"具有自定义方案的网址".应用程序名称可以是任何内容,仅供显示.虽然它说"App Store Id"是可选的,但它是必需的.确保在此处使用与上面设置"iPad Store Id"和"iPhone Store Id"相同的相同内容.这告诉苹果如果用户没有你的应用程序就会将用户推送到itunes商店.