当我连接到公司FaceBook帐户时,CocoaSoundCloudAPI崩溃。需要修复

时间:2012-04-21 14:30:49

标签: soundcloud

(我之前尝试过SoundCloud GoogleGroups(已经不复存在?),并直接向我的SoundCloud联系人提出此问题。请点击此处发布此问题。)

试图在iOS上尝试使用SoundCloudAPI,我发现了一个令人讨厌的错误。这可能是API中的错误,也可能是SoundCloud中的错误,或者(很可能)我做错了什么。 :)但最终的结果将是一个破碎的应用程序,所以我很想知道这里出了什么问题。

我按照Tobias视频和CocoaSoundCloudAPI自述文件设置了一个新的iOS项目。

使用SCShareViewController我连接到我为公司制作的测试SoundCloud帐户。然后,我在应用程序中为测试公司FaceBook帐户创建一个新连接。我单击“安装”和“允许所有权限”。

应用程序然后挂起,由于未捕获的异常'NSInvalidArgumentException'终止应用程序 在线上(在SCRecordingSaveViewController.m中):

cell.textLabel.text = [connection objectForKey:@"display_name"];

每当我现在运行应用程序时,它就会崩溃。

当我转出连接NSDictionary的内容时,看起来self.availableConnections中列出了两个连接,与我为公司FaceBook页面提供的display_name的“facebook_page”连接。但也是第二个带有null display_name的“facebook_profile”。这是导致API崩溃的第二个连接。据推测,API开发人员从未期望过null display_name,但我也不明白为什么它会列出两个FaceBook连接。

如果我进一步调查“display_name”的值,那么Xcode告诉我“变量不是CFString”,而且如果我查看该类,那么它确实不是。

在浏览器中进入SoundCloud,我可以列出连接,并显示其中的两个。一个是我公司FB帐户的名称,另一个是第二个:

“http://facebook.com/profile.php?id= * ** * * 是您的主要Facebook用户帐户“

如果我断开这两个,我可以再次使用SoundCloudAPI而不会崩溃。

然后我创建了新的个人测试SoundCloud和FaceBook帐户,并在应用程序中再次做了同样的事情。这次它没有崩溃(事实上工作得很好),并且连接NSDictionary有一个连接“facebook_profile”和一个有效的display_name。 SoundCloud通过浏览器也只列出一个连接。

请注意,CocoaSoundCloudDemo也会发生这种情况,没有代码更改。

我还可以破解代码以避免在连接到我的公司帐户时崩溃: -

// cell.textLabel.text = [connection objectForKey:@"display_name"]; 

id displayName = [connection objectForKey:@"display_name"];
if ([displayName isKindOfClass:[NSString class]]) 
{
    cell.textLabel.text = (NSString*)displayName;
}

...这给了我两行FB连接,但第二行是空白的。通过一些努力,我可以在代码中弄清楚他们在做什么,如果display_name无效,则不显示行,但显然我不必这样做并使用标准API代码。

所以,长话短说: -

1)SoundCloud是否允许您连接到公司的FaceBook帐户?您是否需要在FaceBook帐户上进行一些特殊设置,以便SoundCloud只能看到“Facebook_profile”而不是“Facebook_page”?问题似乎是在SoundCloud本身,而不是iOS API,但它是崩溃的API。

2)在我的测试应用中,如果用户尝试将SoundCloud帐户连接到公司的FaceBook帐户(至少使用我的最小设置),那么SoundCloudAPI会因异常而崩溃,而我的整个应用程序将继续崩溃,直到用户使用浏览器登录到SoundCloud并手动删除这两个连接。当然这可能不是很好,但我已经搜索过任何有类似问题并且一无所获的人。如果没有找到解决方法,我无法在我的应用中使用完整的API,因为我担心我的用户会遇到同样的崩溃错误,也许还需要创建一个简化的自定义UI,以避免分享到FaceBook等。

1 个答案:

答案 0 :(得分:1)

抱歉,我们之前没有回复你。 从SDK用户那里收到反馈总是很好,我们应该检查一下 反对nil值并相应地处理此案例。

然而,我调查了你所描述的情况,实际上它是有效的 对我来说完美无缺。 Facebook上有两行正确显示 在我的SoundCloud配置文件设置中连接我的SoundCloud帐户w /新的Facebook页面。

您还可以通过运行

来查看已连接的帐户
curl "https://api.soundcloud.com/me/connections.json?oauth_token=<YOUR_OAUTH_TOKEN> 

就我而言,我收到了类似的内容

{
"kind": "connection",
"id": 12345678,
"created_at": "2013/01/10 15:55:20 +0000",
"display_name": "Testpage",
"post_publish": true,
"post_favorite": true,
"type": "facebook_page",
"service": "facebook_page",
"uri": "https://api.soundcloud.com/connections/12345678"
},
{
"kind": "connection",
"id": 12345679,
"created_at": "2013/01/10 11:07:56 +0000",
"display_name": "Rob",
"post_publish": true,
"post_favorite": true,
"type": "facebook_profile",
"service": "facebook_profile",
"uri": "https://api.soundcloud.com/connections/12345679"
}

因此,当通过SDK上传新声音时,我有两个Facebook行 分享部分。你还在遇到这个问题吗?

我们很快会发布iOS SDK的更新,敬请关注并感谢您的反馈。