2016-12-30 6 views
4

Macアプリにプッシュ通知を追加しています。通知はうまく表示されていますが、何らかの理由でサウンドエフェクトを私が思うように再生することができません。アプリが実行されていないときにプッシュ通知音効果を再生する(Mac)

私は、カスタムサウンドを再生するには、 "custom.caf"をapnsペイロードで渡しています。これは現在iOSアプリで動作します。それはMacアプリケーションに渡されると何も再生されません。非常に限定されたAppleのドキュメントで掘り下げて、PushyMacアプリは、プッシュのために来るuserInfo辞書に基づいて手動で音を演奏しなければならないことを示している。アプリの実行中に手動でサウンドを再生すると、サウンドエフェクトが再生されます。

私の問題は、アプリケーションが閉じていて実行していないときです。期待どおりにプッシュ通知を受け取りますが、サウンドは再生されません。私が知ることから、私はちょうどうんざりです。私はまだ実行していないときにサウンドを再生することができる他のMacアプリを持っています。特に私の電子メールアプリSparkだから私はそれが可能であることを知っているが、私は秘密のソースがそれを取り除くことであることを理解できない。助けてください!!

+0

カスタムサウンドを再生しようとしていますか、アプリケーションが実行されていない間にサウンドが再生されていますか?私は、アプリケーションが実行されていないときに、デフォルトのサウンドを再生することができます。私はAPNでカスタムサウンドを使ってみたことはありませんでした。 –

+0

私は通知を傍受し、実行中に自分のサウンドを再生できますが、両方を再生することができます。アプリケーションが実行されていないときは、私はちょうどデフォルトサウンドを取得します。私はそれが可能でなければならないので、実行していないときにカスタムサウンドを再生する他のアプリケーションがあります。 –

+0

私はこれを調べるのに数分しかかからず、私のアプリが閉鎖されている間にカスタム通知音を再生することができました。私のコードとAppleの "PushyMac"の例との違いは何か、そしてなぜそれが他のものよりも優れているのかを調べるチャンスはありませんでした。また、Objective-CやSwiftを使用しているサウンドファイルはどのファイル形式ですか? –

答えて

0

アップルプッシュ通知用のカスタムサウンド機能を実装するのは簡単です。問題は、ドキュメントにこれを行うために必要なことが言及されていないということです。

重要なコンポーネントは、拡張子です(たとえば、Today Extensionを使用しています)。拡張機能、独自のサウンド、および標準のAPN機能を含め、プロジェクト内に新しいターゲットを作成するだけで十分です。 キーあなたのアプリケーションが動作していない間にカスタムサウンドを取得するには、あなたのアプリケーションにアプリケーションの拡張子(単にNotificationCenter.framework)が含まれているだけです。

新規ターゲット>今日拡張追加:拡張>コピーバンドルリソース>フェーズを構築する今日

today extension

を>カスタムサウンド:

build phases

のみ、特定のAPN主なアプリケーションに必要な機能は次のとおりです。

func applicationDidFinishLaunching(_ aNotification: Notification) { 
            NSApplication.shared(). 
            registerForRemoteNotifications(matching: 
            [.alert, .sound, .badge]) 
            NSApp.dockTile.badgeLabel = nil 
} 

func application(_ application: NSApplication, 
       didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
} 

func application(_ application: NSApplication, didReceiveRemoteNotification 
           userInfo: [String : Any]) { 
} 

func application(_ application: NSApplication, 
       didFailToRegisterForRemoteNotificationsWithError error: Error) { 
       print("could not register for notfications: \(error)") 
} 

あなたはそれはあなたがAudioServicesPlaySystemSoundを呼び出しているとNotificationCenter.frameworkが追加何かを追加することなく、すべてのことを扱うように見えるように除去することができ、コードを持っている可能性があります同時にプレイする2つのサウンドを得ている場合。

+0

私は実際に今日のウィジェットを構築する必要がありますか?ユーザーがウィジェットを壊れた状態でインストールすることができなくても、エクステンションを運ぶ手口はありますか?私は実際に音を出すためにフル機能のウィジェットを作りたいとは思っていません。 –

+0

私は今日の拡張機能を試してみましたが、動作していないようです。地獄、私はフォアグラウンドで通知を受け取ったときに正しいサウンドを再生していない。私はSparkで再生するサウンドファイルを借用していたので、ファイル自体ではありません。何かは本当に奇妙です。私は隠すのが簡単なような共有拡張を試みるかもしれません。 –

+0

あなたのプロジェクトがどうなっているか、証明書の設定方法などはわかりません。自由にデモプロジェクトを一緒にスローしてみてください。同じ証明書を使用しているプロジェクトのコピーが複数ある場合は、正しく機能しない可能性があります。新しいアプリをセットアップしたり、拡張機能を追加したり、サウンドファイルをコピーしたり、メインアプリで自分の答えに使っただけの機能を使ったりして、完璧に機能しました。 –

関連する問題