Facebook App邀请通知无法在ios中使用

时间:2015-11-19 11:35:45

标签: ios objective-c facebook-graph-api facebook-ios-sdk facebook-invite-friends

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

  

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

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

  
    

我的Info.plist文件

  
     

我认为我在网址类型(网址)下的info.plsit中出错了   计划)。我有书面行动,这是方法的名称,但我不知道   不知道我应该在本专栏中写些什么。

enter image description here

  

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; }
  

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

}

4 个答案:

答案 0 :(得分: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.plist中,URLSchemes值必须与您在facebook输入'url with custom scheme'中的值相同。例如,如果您在Facebook对话框中的“自定义方案的网址”中有myapp://,那么您的网址广告将为myapp(您目前在哪里action

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

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

确保在您的开发者设置(https://developers.facebook.com/apps/ {{app-id}} / settings /)中添加了平台ios,并设置了两者捆绑ID和iphone商店ID和ipad商店ID。

Screenshot from my app on facebook developer page

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

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

使用脸书“快速启动”创建应用邀请链接时,请确保正确设置ios框中的参数。以下是设置应该是什么样子的示例。(这是看起来像“https://fb.me/634411166661512”的链接

Example setup of fb app link

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

答案 1 :(得分:2)

转到开发人员信息中心。选择你的应用。添加平台&#34; Facebook画布&#34;,设置画布网址。希望它有效

答案 2 :(得分:0)

要获取有效通知,请转到设置并添加所需的平台。如果你想在iOS原生应用上获得通知而不是添加&#34; iOS&#34;平台相同的&#34; Android&#34;并为web添加&#34; Facebook Canvas&#34;。为每个平台添加所需的数据,然后尝试。希望它能奏效。

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

答案 3 :(得分:0)

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

enter image description here