NCMBでランキング機能を実装してからXcodeでビルドした時のエラーです。
エラー内容
Undefined symbols for architecture arm64: "_ASAuthorizationScopeEmail", referenced from: -[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o "_ASAuthorizationScopeFullName", referenced from: -[NCMBAppleAuth loginWithAppleId:] in NCMBAppleAuth.o "_OBJC_CLASS_$_ASAuthorizationAppleIDProvider", referenced from: objc-class-ref in NCMBAppleAuth.o "_OBJC_CLASS_$_ASAuthorizationController", referenced from: objc-class-ref in NCMBAppleAuth.o "_OBJC_CLASS_$_UNUserNotificationCenter", referenced from: objc-class-ref in NCMBAppControllerPushAdditions.o "_OBJC_CLASS_$_WKWebView", referenced from: objc-class-ref in NCMBRichPushView.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
解決策
以下のフレームワークが不足しているというエラーです。
- WebKit.framework
- UserNotifications.framework
- AuthenticationServices.framework
Xcode側でもやれるのですがクリーンした時に同じ設定を毎回しないといけなくなるので、Unity側で対応していきます。
やり方は適当なプラグインの内1つを選択します。
インスペクターで PlatformSettings > Rarely used frameworks を開きます。
上記3つのフレームワークにチェックをつけます。


はい、これで完了です。
再びUnity側でビルドしてもらいXcodeのビルドをするとエラーが解消されます。
プラグインが1つでいい理由
これやってることはXcodeのframeworkを追加しているからです。下図はXcodeのframework一覧でここ変化しています。重複しても意味ないので1つだけでいいということです。
参考
Unity+NCMB+iOSビルドでlinker command failed with exit code 1のエラー – ゆーじの技術ブログ