Facebook 应用邀请通知在 ios 中不起作用

Facebook App invites notification not working in ios

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

I have added all detail in my question, now can anyone tell me what is the issue in my code and what should I do to resolve this. I have created test users for testing this app.

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

My Info.plist File

我想我在 URL 下的 info.plsit 中输入错误 (URL 计划)。我已经写了动作,这是方法的名称,但我没有 知道我应该在这个专栏写什么吗。

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

Getting result null when appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults:(NSDictionary *)results called

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

}

试试在你的 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 a custom scheme'。例如,如果您在 Facebook 对话中的 'URL with a custom scheme' 中有 myapp://,那么您的 URLScheme 将是 myapp(您当前有 action

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

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

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

使用 Facebook 的 'Quick Starts' 创建应用程序邀请 link 时,请确保您在 iOS 框中正确设置了参数。这是设置应该是什么样子的示例。这是看起来像 https://fb.me/634411166661512

的 link

"URL with a custom scheme" 必须与 info.plist 中的任何内容相同 - 如果 info.plist 下的 myapp 中有 URLSchemes,请使用上面的答案=] 你会把 "myapp://" 放在 Facebook "URL with a custom scheme" 中。应用名称可以是任何名称,仅供显示。尽管它说 "App Store Id" 是可选的,但 是必需的 。确保在这里使用与上面设置 "iPad Store Id" 和 "iPhone Store Id" 时相同的一个。如果用户没有您的应用程序,这会告诉 Apple 将用户推送到 iTunes 商店。

转到开发人员仪表板。 select 您的应用。添加平台 "Facebook canvas",设置 canvas url。希望有用

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

记住:对于 iOS 和 Android 本机应用程序,您必须添加实时应用程序的数据:)

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