我在演示应用程序中实现了Facebook App邀请。它工作正常,但没有收到通知。
我已经在我的问题中添加了所有细节,现在任何人都可以告诉我它是什么 我的代码中的问题,我该怎么做才能解决这个问题。我有 创建测试用户以测试此应用程序。
此代码工作正常,它会启动一个对话框,显示好友列表,并显示已发送应用邀请,但当我在好友帐户中查看时,它不会显示任何通知。
我的Info.plist文件
我认为我在网址类型(网址)下的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; }
ViewController.h
在
时获取结果为nullappInviteDialog:(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];
}
答案 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。
你可以使用任何应用程序ID(来自itunes connect的那个,实际上称为'apple id')用于iphone&amp; ipad应用程序ID(只需确保它是应用程序商店中有效的一个,名称不必匹配)并使用您的应用程序的包ID。 iphone&amp;的数量ipad id 可以相同。这是至关重要的,因为如果没有这个,facebook不会向用户发送通知,因为如果用户没有下载应用程序,它就不知道将用户发送到何处。把它放入并发送另一个通知,它应该可以工作。
/ ---------- SIDE NOTE 2 ------------- /
使用脸书“快速启动”创建应用邀请链接时,请确保正确设置ios框中的参数。以下是设置应该是什么样子的示例。(这是看起来像“https://fb.me/634411166661512”的链接
“自定义方案的网址”必须与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)