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 上测试时遇到的同样问题。希望这会有所帮助:)
我在演示应用程序中实现了 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
"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 上测试时遇到的同样问题。希望这会有所帮助:)