web-dev-qa-db-ja.com

Today拡張機能からCoreMedia権限を継承できませんでした

Today-ExtensionをObjective-CアプリにSwift)に追加しようとしています。デバッガログにこのメッセージが引き続き表示されます:Failed to inherit CoreMedia permissions from 3005: (null)。私はウィジェット内からNSUserDefaultsから読み取りますが、アプリ自体で読み取り/書き込みを行います。TodayViewControllerの唯一のコードは次のとおりです。

override func viewDidLoad() {
    super.viewDidLoad()

    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    totalLabel.text = formatter.stringFromNumber(0)
    coinsLabel.text = formatter.stringFromNumber(0)

    formatter.maximumFractionDigits = 0
    billsLabel.text = formatter.stringFromNumber(0)

}

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}

func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
    // Perform any setup necessary in order to update the view.

    // If an error is encountered, use NCUpdateResult.Failed
    // If there's no update required, use NCUpdateResult.NoData
    // If there's an update, use NCUpdateResult.NewData

    completionHandler(NCUpdateResult.NewData)
}
64
Shan

「NNNNからCoreMedia権限を継承できませんでした」という警告は、App Extensionを作成する際の App Groups に関連していると思います。含まれているアプリケーションとアプリ拡張機能の両方で、アプリグループ機能をオンにし、同じアプリグループコンテナID(例:group.com.yourdomain.yourappname)を使用する必要があります。アプリグループを使用して、複数のアプリが共有コンテナにアクセスできるようにし、アプリ間の追加のプロセス間通信を許可します。

Capabilities should look like this

49
Jon

まず、Assets.xcassetsをクリックします

First, Click on Assetes.xcassets

次に、Target Membershipをクリックし、アプリとウィジェットの両方をチェックして、ウィジェットがリソースにアクセスできるようにします。

Second, Click on Target Membership

その後、ウィジェットを再度実行すると、正常に動作するはずです。

15
vhong

同じログ出力がありました。クリーニング(Cmd + Shift + K)私のためにそれを解決しました。

13
Maurice

私もその問題に遭遇しました。解決した唯一の解決策は、ストーリーボード上のすべてのオブジェクトの垂直および水平の制約を追加することでした。

8
Phanith

今日の拡張機能のメインストーリーボードを確認し、「初期ビューコントローラー」オプションのあるビューコントローラーを有効にしました。

6
pavelcauselov

非常に誤解を招くエラー。上記のとおり。 View Controllerを選択して、不足している制約を追加するか、自分に制約を追加して問題を修正します。

enter image description here

4
bpolat

この質問の回答に記載されているほとんどのことを実行しても、今日のウィジェットでまだエラーが発生しました-私のために働くものを見つけました。

ウィジェットターゲットビルド設定を開き、Always Embed Swift Standard Librariesを検索します。[はい]を選択します。

他に何も助けなかった場合、これがあなたのために働くことを願っています

3
moonvader

ビューコントローラーにカスタムの統合されたinit(nibName:bundle:coder:)メソッドがあり、Swiftを満たすためにこのようなinitWithCoderを実装していたので、これは私を襲った:

_required init?(coder aDecoder: NSCoder) {
    self.init(nibName: nil, bundle: nil, coder: aDecoder)
}
_

代わりにsuper.init(coder:)を呼び出すことで問題を修正しました:

_required init?(coder aDecoder: NSCoder) {
    // [...setting some variables...]
    super.init(coder: aDecoder)
}
_
2
Marco

ケースを解決しました:コンテナーアプリと拡張アプリの両方でアプリグループを有効にします。そして、UILabel, UIView, ...としてすべての非表示のUIKitコントロールを削除します

0
phuongle

私もこの問題に遭遇しました。私にとっての問題は、シミュレータで2つのプログラムを同時に実行していたことです。それらの1つを停止した後、エラーメッセージは消えました。それが役に立てば幸い。

0
joshLor

拡張機能の実行中に同じ問題が発生しました。私の場合、実際のデバイスで拡張機能を実行することで解決しました。

0
Ramakrishna

StoryBoardを使用している場合、info.plistに移動し、NSExtensionPrincipalClassプロパティを削除する必要があることがわかりました。その後、拡張機能は問題なくロードを開始しました。

0
BrenBoh

このエラーメッセージの私の経験はここにあります。 4つのViewControllerを含むストーリーボードがありました。それらすべてに対してリファクタリング抽出を行ったため、5つのストーリーボードがあり、そのうち4つにはビューコントローラがあり、オリジナルの「メイン」にはストーリーボード参照のみが含まれていました。

まあ...それは悪いです。それをしないでください。

最初のストーリーボードを元のストーリーボードファイルに保存したときにすべてが機能したため、そのうちの1つだけをリファクタリングしませんでした。

0
Paul Cezanne