2012-04-21 55 views
0

(我以前试过的SoundCloud Google网上论坛(停止?),并直接为这我的SoundCloud接触。听说要在这里发表的问题。)当我连接到公司FaceBook账户时,CocoaSoundCloudAPI崩溃。修复需要

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

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

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

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

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

每当我现在运行的应用程序,它崩溃上这一行。

当我转储出连接NSDictionary的内容时,它看起来像self.availableConnections中列出了两个连接,这是我为我公司FaceBook页面提供的display_name的一个“facebook_page”连接。但也有第二个“facebook_profile”与空display_name。这是导致API崩溃的第二个连接。据推测,API开发人员从不期待一个空的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代码。

SO,长话短说: -

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

2)从我的测试应用程序中,如果用户试图将SoundCloud帐户连接到公司的FaceBook帐户(至少,我用我的最小设置),则SoundCloudAPI将崩溃并出现异常,我的整个应用程序将继续崩溃,直到用户使用浏览器登录到SoundCloud并手动删除这两个连接。当然这不是好事,但我已经为Google搜索了一个类似的问题,但没有发现任何东西。没有找到解决办法,我不能在我的应用程序中使用完整的API,因为我担心我的用户会遇到同样的崩溃问题,并且可能不得不创建一个自定义用户界面,以避免需要共享FaceBook等。

+0

嗨,这是来自SoundCloud iOS团队的Tobias。你应该做什么(据我了解你的描述),应该工作。我们会仔细研究一下,但这可能需要几天的时间。 – 2012-04-24 12:26:59

+0

没问题,我对此并不急。如果需要,我可以提供更多信息,例如SoundCloud站点的屏幕截图以及两个FB连接,或API中连接列表中返回的数据。您应该可以通过创建一个新的FB账户,选择一个公司而不是个人账户,然后使用CocoaSoundCloudDemo连接到FB来重现错误。这就是我所做的一切。 – 2012-04-25 08:53:21

+0

只是想知道你是否在这个方面取得了进展?即使这种进步只是你不能重复的问题。我不能将SoundCloud支持添加到我的应用程序,直到我知道它不会导致我的用户问题。 – 2012-05-09 08:49:49

回答

1

对不起,我们还没有回来给你。 从我们的SDK用户那里收到反馈总是很好,是的,我们应该检查 对nil的值,并相应地处理这种情况。

但是,我调查了你所描述的情况,实际上它对我来说完美无缺地工作了 。我的 在我的SoundCloud配置文件设置中将我的SoundCloud帐户与新的Facebook页面连接起来后,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的更新,敬请期待并感谢您的反馈。