(私は以前にSoundCloud GoogleGroups(廃止されましたか?)を試しましたが、これについてはSoundCloudの連絡先に直接問い合わせてください。問題をここに投稿するように言われました。)
iOS で SoundCloudAPI を理解しようとしたところ、厄介なエラーが見つかりました。これは API のバグか、SoundCloud のバグか、または (ほとんどの場合) 何か間違ったことをしている可能性があります。:) しかし、最終的には壊れたアプリになるので、ここで何がうまくいかないのかを理解したいと思っています.
Tobias のビデオと CocoaSoundCloudAPI の readme に従って、新しい iOS プロジェクトをセットアップしました。
SCShareViewController を使用して、会社用に作成したテスト用の SoundCloud アカウントに接続します。次に、アプリ内でテスト会社の FaceBook アカウントへの新しい接続を作成します。インストールをクリックし、すべての権限を許可します。
その後、アプリがハングし、(SCRecordingSaveViewController.m 内の) キャッチされていない例外 'NSInvalidArgumentException' によりアプリが終了します:
cell.textLabel.text = [connection objectForKey:@"display_name"];
今アプリを実行すると、この行でクラッシュします。
接続 NSDictionary の内容をダンプすると、self.availableConnections に 2 つの接続がリストされているように見えます。これは、会社の FaceBook ページに指定した display_name を持つ「facebook_page」接続です。ただし、display_name が null の 2 番目の「facebook_profile」もあります。API のクラッシュを引き起こしているのは、この 2 番目の接続です。おそらく、API 開発者は null の display_name を想定していなかったのでしょうが、2 つの FaceBook 接続がリストされている理由がまったくわかりません。
「display_name」の値をさらに調査すると、Xcode は「Variable は CFString ではありません」と通知し、実際にクラスを見るとそうではありません。
ブラウザーで SoundCloud にアクセスすると、接続を一覧表示でき、そのうちの 2 つが表示されます。1 つは私の会社の FB アカウントの名前で、もう 1 つは次のとおりです。
「http://facebook.com/profile.php?id= * ** * *はあなたの主要な Facebook ユーザー アカウントです」
これらの両方を切断すると、クラッシュすることなく、SoundCloudAPI を再び使用できます。
次に、SoundCloud と FaceBook の新しい個人用テスト アカウントを作成し、アプリ内で同じことを繰り返しました。今回はクラッシュしませんでした (そして実際にうまく機能しました)。接続 NSDictionary には、有効な display_name を持つ 1 つの接続 "facebook_profile" があります。ブラウザ経由のSoundCloudでも、接続が1つだけリストされます。
これは、コードを変更しない 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 接続を含む 2 つの行が得られますが、2 番目の行は空白です。少し努力すれば、コードで彼らが何をしているのかを理解し、display_nameが無効な場合は行を表示しないようにすることができますが、明らかにそれを行う必要はなく、標準のAPIコードを使用したいと思います.
SO、簡単に言えば:-
1) SoundCloud では会社の FaceBook アカウントに接続できますか? SoundCloud が「Facebook_page」ではなく「Facebook_profile」のみを表示するように、その FaceBook アカウントで行う必要がある特別な設定はありますか? 問題は iOS API ではなく、SoundCloud 自体にあるようですが、クラッシュするのは API です。
2)私のテストアプリから、ユーザーがSoundCloudアカウントを会社のFaceBookアカウントに接続しようとすると(少なくとも、私が持っている最小限の設定で)、SoundCloudAPIが例外でクラッシュし、アプリ全体がユーザーがブラウザーを使用して SoundCloud にログオンし、2 つの接続を手動で削除するまでクラッシュし続けます。確かにこれは良いことではありませんが、同様の問題を抱えている人をグーグルで検索しましたが、何も見つかりませんでした. これに対する修正が見つからない限り、ユーザーが同じクラッシュ バグに遭遇することを恐れて、アプリで完全な API を使用することはできず、FaceBook などに共有する必要を回避するカットダウン カスタム UI を作成する必要があるかもしれません。