4

ここに書ける範囲で書きますが、タイトルがすべてを物語っています。私はいくつかの異なる状況でそれをテストしました:

1) 電話オン、マナーモードオフ、アプリオン、フォアグラウンド、画面ロック解除

これはアプリ デリゲートの didReceiveLocalNotification を通過し、didReceiveLocalNotification に含めた処理コードを除いて、音や振動を期待していないことはわかっています。実際に呼び出された処理コード

        NSURL *Sound   = [[NSBundle mainBundle] URLForResource: self.currentSoundPVC
                                    withExtension: @"caf"];
        // Create a system sound object representing the sound file.
        AudioServicesCreateSystemSoundID (soundFileURLRef,&soundFileObject);
        AudioServicesPlayAlertSound (soundFileObject);

そしてそれは実際に機能します!サウンドを再生し、同時に電話を振動させます。

2) 電話オン、マナーモードオフ、アプリオン、バックグラウンド、画面ロック解除

ここで、次のコードを使用して、アプリ デリゲートの applicationDidEnterBackground で uilocalnotification アラームを設定します。

NSString *Sound   = [self.currentSoundPVC stringByAppendingString:@".caf"];
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
alarm.fireDate = [NSDate dateWithTimeIntervalSinceNow:seconds];
[alarm setSoundName:Sound];
[[UIApplication sharedApplication] scheduleLocalNotification:alarm];

これは部分的にしか機能しません。音はしますが振動はありません!さて、これはアップルの開発者のウェブサイトから引用しているので、バグだと思います。

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html、ローカル通知の配信のスケジュール設定セクション:

「通知が送信され、サウンドが再生されると、システムはそれをサポートするデバイスで振動もトリガーします。」

さて、明らかに私のiPhoneには当てはまらず、明らかにシミュレーターは振動しないので、これをテストすることはできず、開発者コミュニティでこれに対処したいと思います!

3) 電話オン、サイレントモードオフ、アプリオン、フォアグラウンド、画面ロック

#2と同じ

4) 電話オン、マナーモードオフ、アプリオン、バックグラウンド、画面ロック

#2と同じ

5) 電話オン、サイレントモードオフ、アプリオフ (バックグラウンドプロセス削除)

#2 と同じです。uilocalnotifications はキャンセルされていないため、iOS はまだそれらが有効であると考えています。

6) 電話オン、マナーモードオン、アプリオン、バックグラウンド、画面ロック解除

音も振動も何もありません!これはひどい!いつものように、アップルが箱から出してすぐに機能するものを思いついたことを願っていました!

4

3 に答える 3

3

これらはオプションと効果です (すべてボリュームが適切な値に設定されていることを前提としています):

オプション1:

構成:

  • [開発者管理] UILocalNotification = No に設定された有効なサウンド名
  • [ユーザー制御] アプリの通知センター設定: サウンド = N/A
  • [ユーザー制御] サイレント モード (iPhone 側のスイッチ) = N/A

行動:

  • 通知で再生される音 = いいえ
  • バイブレーションで通知 = いいえ

オプション 2:

構成:

  • UILocalNotification に設定された有効なサウンド名 = はい
  • アプリの通知センター設定: サウンド = オフ
  • サイレント モード (iPhone 側のスイッチ) = N/A

行動:

  • 通知で再生される音 = いいえ
  • バイブレーションで通知 = いいえ

オプション 3:

構成:

  • UILocalNotification に設定された有効なサウンド名 = はい
  • アプリの通知センター設定: サウンド = オン
  • サイレント モード (iPhone 側のスイッチ) = いいえ (選択されていません)

行動:

  • 通知とともに再生されるサウンド = はい
  • バイブレーションで通知 = いいえ

オプション 4:

構成:

  • UILocalNotification に設定された有効なサウンド名 = はい
  • アプリの通知センター設定: サウンド = オン
  • サイレントモード (iPhone 側のスイッチ) = はい (選択済み)

行動:

  • 通知で再生される音 = いいえ
  • バイブレーションで通知 = はい
于 2014-06-19T15:24:44.347 に答える
2

以下は、音と振動で機能します。

        // Create a new notification
        UILocalNotification * notif = [[[UILocalNotification alloc] init] autorelease];
        if (notif)
        {
            notif.repeatInterval    = 0;
            notif.alertBody         = @"NOTIFICATION!!"];
            notif.soundName         = @"sound.caf";             
            notif.alertAction       = NSLocalizedString(@"View", @"View");

            [[UIApplication sharedApplication]  presentLocalNotificationNow:notif];
        }

ちょっとばかげているように聞こえるかもしれませんが、iPhone の設定でバイブレーションをオフにしていませんか?

于 2011-03-26T22:27:27.770 に答える
1

これを回答として投稿して申し訳ありませんが、私のコメントは長すぎてあなたの下に投稿できませんでした。だから私はそこにスニペットを置き、残りをここに置きます。これはトニーミリオンの答えへの返事でした。

こんにちはトニー、あなたの入力に感謝します、しかし私はあなたが変更したもののどれが影響を及ぼしたかわかりません。私が正しく注意している場合は、次の項目を変更しました。

1)scheduleLocalNotification-> presentLocalNotificationNow

2)UILNrepeatIntervalを明示的に設定する

3)UILNalertBodyを明示的に設定する

4)UILNalertActionを明示的に設定する

これらの4つの変更を除いて、他には何も表示されません。これらの因果関係の変化のうち、あなたにとって望ましい効果があったと思うのはどれですか。

笑...それがばかげた質問だったように感じる必要はありません。私は自分の投稿で「サイレントモードのオン/オフ」について言及しましたが、それが何を意味するのかは特定しませんでした。私は特に電話の側面にあるスイッチについて話していました。iPhoneの設定を確認することすら思いつかなかった!はは!いい質問でした!ただし、残念ながら、OrigPostのシナリオ#1ではオフになっておらず、正常に振動していました。

于 2011-03-28T02:27:12.000 に答える