まったく安定しないですな。
特にEffectがダメっぽい。

ざっくりした手順としては、
プロジェクトを作成して、
Inter-App AudioとBackground Modesを有効にして、
Background Modesは「Audio, AirPlay and Picture in Picture」にチェックを入れる。
プロジェクトを作成する前でも後でも良いので、
Inter-App Audioが有効なProvisioning Profileを作成して、
それをプロジェクトのBundle Identifierに設定する。
“Info.plist”に「AudioComponents」(Array)を追加して、
そこに要素(Dictionary)を追加して、

manufacturer
name
subtype
type
version

を追加する。

manufacturerは、作成した会社を識別する4文字。
Appleは’Appl’を使っている。
nameはアプリ名。
subtypeは、アプリを識別する4文字。
サンプルコードでは’iasp’を使っているが、
これは、”IAA Sampler”を略したと思われる。
typeは、’aurx’と’auri’と’aurg’のいずれか。
Generatorなら’aurg’を使用する。(”AUComponent.h”を参照)
versionは、整数値を使用すること。

次に、これらを使ってホストアプリにAudioUnitを公開する。

    AudioComponentDescription desc = {
        kAudioUnitType_RemoteGenerator, 'hoge', 'fuga', 0, 0 };
    OSStatus result = AudioOutputUnitPublish( &desc, CFSTR("Foo"), 1, audioUnit );

ここでのポイントは、AudioComponentDescriptionの
componentFlagsとcomponentFlagsMaskには0を設定すること。

これでうまくいくはず。
“Info.plist”でスペルミスをすると、AudioOutputUnitPublishで失敗する。

あとは、音の出口であるRemoteIOを、
AudioOutputUnitPublishを使って公開するだけ。
なので、シンセアプリのように動的に波形を生成する場合は、
AUGraphによる接続は必要なかったりする。

残りはサンプルコードを見てなんとかしてください。
動作が不安定だけど、サンプルコードでも同様に不安定なので、
もう少しだけ、さぐってみようと思う。

おしまい。