1

私はobjective-c、xcode、およびアプリ開発に不慣れなので、これを覚えておいてください。

APNS 経由で新しいアプリにプッシュ通知を送信できます。JSON メッセージが表示され、NSSLog ができます。

Payload: {
    aps = {
        alert = {
            "action-loc-key" = Reveal;
            body = "Hi Aleem, we have a new special offer just for you!";
        };
        badge = 70;
        sound = default;
    };

    myCMD = {
        "update_colour" = red;
    };
}

これまでのところすべて順調です。ただし、アクションを実行してプッシュ メッセージに対応できる必要があります。たとえば、 を抽出しupdate_colourて値 red を使用して、唯一無二のコントローラーのラベルの背景色を赤に変更できるようにしたいと考えています。

私の問題は、appdelegate.m から自分のラベルを参照できないことです。したがって、背景色を更新することも、コントローラーでメソッドを呼び出してそれを行うこともできません。

これについて何か助けていただければ幸いです。

4

1 に答える 1

1

デリゲートに次を追加します。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

次に、アプリケーションの実行中にプッシュ通知が受信されたとき/ユーザーがプッシュ通知を開いたときに、通知ペイロードにアクセスしてそれに基づいて操作できます。その後、View Controller に通知を送信できます。

ビューにオブザーバーを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(backgroundChanged:)
                                         name:@"ChangeBackground"
                                       object:nil];

ハンドルを追加します。

- (void)backgroundChanged:(NSNotification *)notification {
    NSDictionary *dict = [notification userInfo];

    NSLog(@"%@" [[dict valueForKey:@"myCMD"] valueForKey:@"background-colour"]);

    label.backgroundColor = [UIColor xxx];
}

次にデリゲートで:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if([userInfo valueForKey:@"myCMD"]) {
            NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
        [notificationCenter postNotificationName:@"ChangeBackground"
                                    object:nil
                                    userInfo:userInfo];
    }
}
于 2012-09-23T11:52:09.433 に答える