1

iPhone アプリ用に独自のプッシュ通知サーバーを作成しました。クライアント デバイスにさまざまなプッシュ通知を送信しています。特別な通知が 1 つあるので、appDelegate または任意の場所で特定の関数を呼び出したいと思います。

どうすればこれを実装できますか?

4

2 に答える 2

2

直接呼び出す関数を指定することはできません

アプリが起動すると、-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions呼び出され、下のオプションでメモが渡されますUIApplicationLaunchOptionsRemoteNotificationKey

アプリが実行されているとき、あなたはapplication:didReceiveRemoteNotification:


通知で呼び出すメソッドのNAMEを渡すことができます!それで:

...
NSString *methodName = [notificationUserInfo objectForKey:@"methodName"];
[self performSelector:NSSelectorFromString(methodName)];
...

サーバー側のJSONにはmethodNameキーが含まれます。ここに示すように、APNSJSONPAYLOADが好きなものをすべて含めることができます-より多くの引数

{"aps":{"alert":"APP_NAME': BLA_BLA_BLA","sound":"default"}, "methodName":"xy"}
于 2013-01-29T17:16:24.597 に答える
1

ユーザーが通知を介してアプリを起動すると、さまざまなシナリオが発生する可能性があります。

起動されなかった場合、アプリはデフォルトの方法で起動し、次の方法で通知を処理できます。

-(BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UILocalNotification *remoteNotif =
        [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (remoteNotif) {
        //handle remote notification
    }
    ....
}

アプリがバックグラウンドまたはフォアグラウンドにあった場合、デリゲート メソッドと呼ばれる

- application:didReceiveRemoteNotification: {
    if (application.applicationState == UIApplicationStateActive){
        //application was in foreground
    } else if (application.applicationState == UIApplicationStateInactive){
        //application was in background
    }
}

また、アプリケーションがフォアグラウンドにあった場合、システムはアラートを表示せず、バッジ アイコンや再生音を変更しないでください。通知は完全に自分で処理する必要があります。

于 2013-01-29T17:01:43.060 に答える