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.
您可以使用任何应用程序ID(来自itunes connect的那个,实际上称为'apple id')来获取iphone和ipad应用程序ID(只需确保它是应用程序商店中的有效ID,名称不必匹配)并使用您的包您的应用的ID.iphone和ipad id的编号可以相同.这是至关重要的,因为如果没有这个,Facebook不会向用户发送通知,因为如果用户没有下载应用程序,它就不知道将用户发送到何处.把它放入并发送另一个通知,它应该工作.
/ ---------- SIDE NOTE 2 ------------- /
使用Facebook的"快速入门"创建应用邀请链接时,请确保正确设置ios框中的参数.以下是设置应该是什么样子的示例.(这是看起来像" https://fb.me/634411166661512 " 的链接)
无论您在info.plist中拥有什么,"自定义方案的网址"都必须相同 - 使用上面的答案,如果您在info.plist中的"myapp"下面有URLSchemes,则将"myapp://"放入facebook"具有自定义方案的网址".应用程序名称可以是任何内容,仅供显示.虽然它说"App Store Id"是可选的,但它是必需的.确保在此处使用与上面设置"iPad Store Id"和"iPhone Store Id"相同的相同内容.这告诉苹果如果用户没有你的应用程序就会将用户推送到itunes商店.
| 归档时间: |
|
| 查看次数: |
6438 次 |
| 最近记录: |