【iOS開発】TodayExtensionが表示できない時の対処法

どうも、はじめまして!開発部のMです。

自分は主にiOS向けアプリの開発を行っており、現在は天気アプリを開発しています。

 

入社4年目で開発者としてはまだまだですが、一人前の開発者になれるよう貪欲に技術を吸収していきたいです。

 

さて、フラットはこれまでインフラ構築エンジニアが多く、開発エンジニアが少ない状態が

しばらく続いていたので開発部内の技術共有もなかなか出来ませんでした。

しかし、今年は開発部の人数も増え、社内での企画の話も盛んに行われるなど、

以前よりも(言い方は変ですが)会社が面白くなってきていると思います。

今後は開発部内の技術共有も積極的に行い、より活発に技術を高めていきたいです。

 

その手始めとしてブログにて自分が開発している際に発生したiOS8で追加された新機能

TodayExtensionに関する問題と解決策について技術共有させていただきます。

 

【問題~Question】

既存のProjectにTodayExtensionを追加して起動しても

通知センターにウィジェットが表示されない。

 

通常はTodayExtensionをadd Targetから追加すれば起動した際に

通知センターに表示されるのですが、表示されないどころか通知センターも起動されず。

試しに新規Projectで同じ手順をしたら問題なく表示されたので新規Projectで

再構成するのも一つの手段ではあったのですが、既にリリース済みのアプリなので

簡単にProjectを作り直す訳にもいかずだいぶ困りました。。。

 

 

【解決策~Answer】

TodayExtensionのTarget->BuildSettings->Packaging->WrapperExtensionが

「app」になっていたので「appex」に修正

 

TodayExtensionについての情報はあまりなく、同様の問題が起きている人も

見当たらなかったので、新規Projectと既存Projectの設定をひたすら比較して解決しました。

WrapperExtensionは通常アプリは「app」、TodayExtensionは「appex」なので

TodayExtensionをXcodeが通常アプリと誤認したせいで表示されなかったようです。

 

WrapperExtensionは既存Projectにはない設定なので、おそらくTodayExtensionを追加した際に

Projectバージョンが古い場合に発生するXcodeのバグだと思われます。

 

自分がハマったのはXcode6 beta4の時なので今のバージョンはおそらく問題ないかと思いますが

同じの問題が起きた際にはぜひ解決策の設定項目を確認してみてください。