2009-04-28 15 views
2

私のアプリケーションにインターネット接続が必要です。 iPhoneをアイドル状態にしてから3G接続をシャットダウンしているような感じです。一度私はそれを目を覚ます(ロックを解除するスライド)と私のアプリケーションを実行すると、インターネットに接続することはできません。私はYoutubeまたはSafariを最初に実行しなければなりません。その後、インターネット接続が確立されたら、Youtube/Safariをシャットダウンしてから、自分のアプリケーションを使用して自分のサービスにログインできます。iPhone 3G接続を有効にする

アプリケーションから3G接続をアクティブにする方法を教えてください。(アプリケーションがアイドル状態から復帰し、Youtube/Safariのような他のアプリケーションを実行する必要はありません。

おかげ

答えて

2

アイドルタイマーを無効にするには、UIApplicationクラスのidleTimerDisabled propertyを参照してください。アップルから

このプロパティのデフォルト値は NOです。ほとんどのアプリケーションに の短い時間の間にユーザー入力として が触れていない場合、システムは というデバイスが眠っている状態で「 」デバイスを「スリープ」状態にします。これは電力を節約するために行われます。しかし、用 加速度計、ゲーム以外のユーザー 入力を持っていない アプリケーションは、インスタンスができ、 、YESにこのプロパティを設定することで は システムのスリープを回避するために、「アイドルタイマー」を無効にします。

重要: プロパティは必要な場合にのみ設定する必要があります。 が存在しなくても、 をNOにリセットする必要があります。ほとんどの アプリケーションは、 タイマーが経過すると、システムに の画面をオフにする必要があります。これには、オーディオ アプリケーションが含まれます。 オーディオセッションサービスを適切に使用すると、 画面がオフになると、再生と の録音が中断されません。 アイドルタイマー を無効にするアプリケーションは、マッピングアプリケーション、 ゲーム、または同様のプログラムのうち、 の散発的なユーザー対話です。

+0

返信いただきありがとうございます。これは元の問題を解決するものではありません。私はまだ3G接続を可能にするyoutube/safariタイプのアプリケーションを起動する必要がありますし、私は私のアプリケーションを実行することができます。さらに、この方法はiPhoneの電力も消費します。 – ebaccount

+0

アプリケーションに接続するために何を使用していますか?私はアプリケーションが起動し、すぐにインターネットにアクセスするときに外部サイトへの呼び出しを行います。 –

+0

私は3G接続を有効にしていないconnect(...)のようなソケット関数を使用しています。外部サイトへの呼び出しに使用しているAPIを教えてください。私は、APIが3G接続をアクティブにしていると思います。 – ebaccount

2

あり、他のより良い解決策は明らかですが、あなたが空白のページをロードすることもできます。必要であれば、接続が確立されます

[NSString stringWithContentsOfUrl ... ] 

+0

APIを教えてください。 – ebaccount

+0

@raihan - APIの意味は?レミーのコードを実行してください:[NSString stringWithContentsOfUrl ...]もう一度インターネットにアクセスしてください – Raj

0

接続を正しく確立していますか?私のアプリケーションはソケットを使って同じことを行い、デバイススリープ後に接続を再確立するのに問題はありません。 Reachability APIをSystemConfigurationフレームワークで使用して、カバレッジが利用可能になったときに通知を受け、その後に接続を試みます。デバイスがインターネット接続を得るために目覚めた後、数秒から数分の時間が経過しなければならないことに注意してください。

AppleからのReachabilityサンプルがあります。また、到達可能性のためにstackoverflowを検索してください。さらに、実装方法のヒントがあります。

1

(およびその上に重ねられたすべてのAPI)スリープから復帰した後にデータ接続が再初期化されます。データ接続を再初期化するには、非ローカルアドレスにダミーのNSURLConnectionを作成し、直ちにキャンセルしてください。 socket APIは期待どおりに動作します。

あり、アップルdevのは、これを詳細に説明し、開発者フォーラムにポストがある(しかし、私は、現時点ではそれを見つけることができません)

+0

はい、これは私のために働いた。 NSURLConnectionをすぐにキャンセルするにはどうすればいいですか?ダミーページを取得するリクエスト(google.ca)を送信する必要はありませんか? – ebaccount

+0

ローカルアドレスは、10.x.x.x、169.254.x.x、172.16.x.xから172.31.x.x、192.168.x.xのいずれかの範囲にあります。またはその範囲内のIPに解決される任意のアドレス(DNS要求はキャッシュされるため、データ接続を復帰させることは保証できません)。 キャンセルするには、+ [NSURLConnection connectionWithRequest:delegate:](またはalloc、initWith ...、開始して別にキャンセルする)で初期化された接続にキャンセルメッセージを送信します。 – rpetrich

0

あなたは上のネットワーク設定を変更するとき実際に、あなたは同じ問題を取得しますアプリケーションの起動の間にあなたの電話。たとえば、アプリを起動するときにWIFI接続を使用しているとします。次に、アプリを終了し、WIFIをオフにして、携帯端末のネットワークを使用するようにします。あなたがダミーのNSURLConnectionでトリックしない限り(またはあなたがアプリケーションをlanuchingする前にブラウザを起動する)あなたがアプリケーションを再起動すると、ソケットは接続することができません。

また、NSURLConnectionを初期化した直後に(connectionWithRequestまたはinitWithRequestを使用して)キャンセルしても機能しませんでした。キャンセルする前にリクエストをキャンセルしないでください(例:performSelector:withObject:afterDelay :)。

関連する問題