为什么我无法在iOS上获得针对Facebook深层链接的targetURL?

时间:2014-03-12 17:56:11

标签: ios facebook facebook-ios-sdk deep-linking

我在iOS上从Facebook Open Graph故事深层链接获取targetURL时遇到问题。

我发布了这样的测试故事:

https://graph.facebook.com/me/myapp:checkin?method=POST&access_token=CAAGy9...&meal=http%3A%2F%myapp.com%2F..&fb%3Aexplicitly_shared=true

回复是:

{" id":" 10100 ..."}

查看我的个人资料,故事发布正确。链接进入浏览器后进入网页。 Android上一切正常。

第一个奇怪的是,在我的iPad上,[[call appLinkData] targetURL]为空。这不是一个大问题,因为我可以使用originalQueryParameters。

最大的问题是,在我的iPhone上,appLinkData为空,因此我无法获得有关深层链接的任何信息。

可能有什么问题?我的手机上可能有一些设置吗?为什么没有targetURL在iPad上工作?

这两款设备都更新到iOS 7.1和最新的Facebook应用程序。我使用的是最新的iOS SDK 3.13。我也尝试过旧版本,他们都有同样的问题。我尝试过创建一个新的动作和故事,以及一个完全独立的应用程序,结果是一样的。

这里更奇怪。干净恢复了我的手机。下载了Facebook。从Xcode跑出我的应用程序。现在它有效。停止应用。不做任何改变。再次从Xcode运行应用程序。现在它已经不再适用了。什么都没有改变。

这是我的AppDelegate.m中的内容:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    BOOL wasHandled = [FBAppCall handleOpenURL:url
                             sourceApplication:sourceApplication
                               fallbackHandler:^(FBAppCall *call) {
                                   NSLog(@"%@",call);
                                   NSLog(@"%@",[call appLinkData]);
                                   NSLog(@"%@",[[call appLinkData] targetURL]);
                                   NSLog(@"%@",[[call appLinkData] originalQueryParameters]);
                               }
                       ];

    return wasHandled;
}

这是我在iPad上获得的:

2014-03-12 13:49:03.081 myapp[191:60b] <FBAppCall: 0x14e813d0, ID: 196B6395-875C-4C66...
 accesstoken: CAAGy9nn...
 appLinkData: <FBAppLinkData: 0x14e80910
 actionTypes: (
    "myapp:checkin"
)>
>
2014-03-12 13:49:03.084 myapp[191:60b] <FBAppLinkData: 0x14e80910
 actionTypes: (
    "myapp:checkin"
)>
2014-03-12 13:49:03.085 myapp[191:60b] (null)
2014-03-12 13:49:03.086 myapp[191:60b] {
    "access_token" = CAAGy9nn..;
    "action_object_map" = "[60768014...]";
    "action_ref_map" = "[]";
    "action_type_map" = "[\"myapp:checkin\"]";
    "expires_in" = 3600;
    "fb_action_types" = "myapp:checkin";
    "fb_source" = "other_multiline";
    "target_url" = "http://myapp.com/...";
}

这是我在iPhone上获得的:

2014-03-12 12:55:04.714 myapp[256:60b] <FBAppCall: 0x15dc2e70, ID: 3B25045E-E5F7...
 accesstoken: CAAGy9nn..
>
2014-03-12 12:55:04.723 myapp[256:60b] (null)
2014-03-12 12:55:04.725 myapp[256:60b] (null)
2014-03-12 12:55:04.725 myapp[256:60b] (null)

1 个答案:

答案 0 :(得分:0)

我认为这与我的帐户有关。在我朋友的电话上,他的帐户有效。在他的手机上,他的帐户,它的工作原理。它只是不适用于我的帐户。也许是因为我是该应用的开发者?此外,完全相同的代码适用于我在其他应用程序上的帐户。奇怪。