プッシュ通知に OneSignal を使用しています。
サブスクライブされたリストでは、一部のデバイス/ユーザーはNo (No Push Token)
でマークされています。説明によると:This user has no Push token and cannot be targeted.
それはiOS devices
およびAndroid devices
。
どういう意味ですか?なぜそれが起こるのですか?それを変更する方法は?
「プッシュ通知」機能がオンになっているかどうかを確認できますか?そうでない場合は、電源を入れて動作するかどうかを確認します。動作しない場合は、読み続けてください。
OneSignal SDKの最新バージョン( 2.1.14 )を実行していることを確認してください。このバージョンでは、問題が解決されているはずです。次に、次の修正を試してください。
修正1
ナビゲーションパネルから、一番上の青いプロジェクトを選択します。次に、ターゲットを選択して、ビルド設定に移動します。他のリンカーフラグを検索し、次のエントリを追加します。-ObjC
プロジェクトをクリーンアップして再実行し、機能するかどうかを確認します。
修正2
ブリッジヘッダー(ある場合)、またはアプリデリゲートに表示されるヘッダーファイルで、次のインターフェイスメソッドを定義するOneSignalクラスの拡張機能を作成します。
+ (void)didRegisterForRemoteNotifications:(UIApplication*)app deviceToken:(NSData*)inDeviceToken;
次に、アプリデリゲートのdidRegisterForRemoteNotifications
デリゲートメソッドをオーバーライドし、OneSignalで上記のメソッドを呼び出して、両方のパラメーターをSDKに渡します。
これは、OneSignalがデバイスからpushTokenを取得しなかったが、デバイスがOneSignalアカウントに登録できたことを意味します。 iOSではpushTokenはデバイストークンと呼ばれ、AndroidではこれはGoogleの登録IDです。
使用しているOneSignalSDKに応じて、OneSignalinitを呼び出してログを追加する前に呼び出すことができるsetLogLevel
関数があります。これは、iOSの場合はXcodeログに、Androidの場合はadblogcatに出力されます。また、最後のOneSignalSDKを使用していることを確認してください。
ログイン中にページ下部のヘルプバブルからOneSignalに連絡することもでき、アカウントをチェックして問題の診断に役立てることができます。
バージョン2.1.10までのXCode8で使用した場合にOneSignalSDKにかなり重大な欠陥があり、Cocoapodsを使用してパッケージを含めるときにiOSデバイスのこれらのNo Push token
登録が発生したことに注意してください(推奨されるアプローチ)。ポッドを更新してください。
2.1.11のリリースノート を参照してください。
OneSignalがCocoaPodsを介してダウンロードされ、-ObjCフラグを使用する他のポッドが含まれている場合に発生する2.1.10の「プッシュトークンなし」の問題を修正しました。
Xcodeプロジェクトで 「プッシュ通知」および「リモート通知」 が有効になっていることを確認してください。
他の回答が述べたように、CocoaPodsセットアップの2.1.10にはバグがあります。だから私は変わった
から
pod 'OneSignal' ## points to 2.1.10
に
pod 'OneSignal', :git => 'https://github.com/OneSignal/OneSignal-iOS-SDK.git', :branch => 'master'