だから、私は約1か月前に公開したDripperと呼ばれるこのアプリを持っています。そして数日前に更新します。この更新では、プッシュ通知といくつかの小さな調整が追加されました。開発プロファイルを使用してサンドボックスAPNでテストしたところ、うまくいきました。それから私は物事を生産apnに切り替え、それをテスト飛行にプッシュしました、再び物事は完全に機能しました。更新を市場に出して実行すると、サーバーで新しいプッシュ登録を取得していないことに気付きました。デバイスのコンソールログを見ると、次のことがわかりました。
12月4日17:55:15 Ina-touch-it coffco [1210]:リモート通知の登録
Dec 4 17:55:15 Ina-touch-it SpringBoard [52]:アプリケーション 'Dripper'の有効な 'aps-environment'資格文字列が見つかりません:(null)。通知は配信されません。
12月4日17:55:15 Ina-touch-it coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
アドホックビルドとアプリストアビルドの間で本番APが同じように機能すると考えたため、少し混乱しています。
ここに私のアプリIDとその資格-> http://i.stack.imgur.com/uf4pB.png
アプリストアのプロビジョニングプロファイルは次のとおりです-> http://i.stack.imgur.com/AYOV5.png
この問題を次のように修正しました。
そしてさらに試みる!
ソース:
このような問題は、APNS証明書を作成する前にプロビジョニングプロファイルが作成されるため、現在のプロビジョニングプロファイルにAPNS情報が含まれていないためです。 =
したがって、問題を解決するには、新しいプロビジョニングプロファイルを作成し、Xcodeでプロビジョニングプロファイルを選択します。その後、完了です。
また、Pushを追加すると、キーチェーンの証明書も更新されたと思います。
IOS 8.0以降のバージョンを使用しても同じ問題が発生しました。デバイストークンを取得できず、「アプリケーションに有効な「aps-environment」資格文字列が見つかりません」というエラーが表示されました
以下の手順を使用して修正しました
そして今、プロジェクトを確実に実行します。
Xcode 9については、この特定の問題を解決するための回答の一部が時代遅れまたは不完全です。
私が従うべき手順は次のとおりです。
(FCMはプッシュ通知の前提条件ではありませんが、ガイドは驚くほど明確です ここにリンクがあります )
開発中にアプリをテストするには、App Storeでまだ公開されていないアプリの実行をデバイスに許可するための開発用プロビジョニングプロファイルが必要です。
なんらかの理由で、Weiのソリューションはうまくいきませんでした。 [資格を修正]をクリックすると、Xcodeは2つのファイルを生成しましたが、まだ機能しませんでした。実際、生成された資格ファイルは空でした。
これは(明らかに)プロジェクトのPRODUCT_NAMEがかなり長く、スペースと「ä」と「ö」の文字が含まれていることが原因です。英語のみの文字を含む短いバージョンに変更した後、Weiによる修正は正しく機能しました。
有効なaps-environmentエンタイトルメントエラーが発生しない原因を突き止めるのにしばらく時間がかかりました。問題は、XCodeプロジェクトに2つの.entitlementsファイルがあったことです。 1つはplatform/ios //。entitlementsで、もう1つはplatform/ios // Resources/.entitlementsであり、XCodeが後者を使用するように構成されている間のみ、適切な資格が前者のファイルに存在します。後者のファイルを手動で更新すると、すべてが機能し始めました。これを修正する別のオプションは、XCodeが使用する.entitlementsを変更することです。これは、[ビルド設定]-> [署名]-> [コード署名資格]構成パラメーターで実行できます。
XCodeに2つの.entitlementsファイルがある理由はわかりません。 Cordova Pushプラグインが2番目のプラグインを作成した可能性があります(ハイブリッドCordovaモバイルアプリを開発しています)。また、.entitlementsファイルの正しい場所は何ですか?
この問題を経験し、最初の解決策で解決しました。
ただし、ログインしたAppleアカウントが2つあったため、一度失敗しました。削除した後、すべてが機能しました。