0

UrbanAirship を使用してアプリケーションにプッシュ メッセージを送信しています。私の設定は、開発と本番の両方で機能します。Web URL をプッシュ メッセージとして送信する必要があります。ユーザーがメッセージを開いたときに、追加した URL にリダイレクトする必要があります。このコードを appdelegate に追加しました。

`- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
      NSLog(@"userInfo:%@",[userInfo description]);
      NSLog(@"alert:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
      NSLog(@"alert:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"url"]);
}

のようなプッシュを送信しようとしました

{
    "aps": 
    {
        "alert": "take a look at this site ",
        "url": "www.mysite.com"
    }
}

アラート メッセージを受け取りましたが、再び URL ではなくアプリケーションを開きました。URL を含むプッシュ メッセージを送信して、その URL を開く方法を教えてください。

4

1 に答える 1

1

それには2つの方法があります

Safari で URL を開きます (テストされていないコード):

     - (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo
    { 
     NSLog(@"userInfo:%@",[userInfo description]); 
     NSLog(@"alert:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
     NSLog(@"url:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"url"]); 
     webViewController.url = [NSURL URLWithString:[[userInfo objectForKey:@"aps"] objectForKey:@"url"]];
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSURL URLWithString:[[userInfo objectForKey:@"aps"] objectForKey:@"url"]];
    }

または、アプリで処理する必要があります。

- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo{ 
     NSLog(@"userInfo:%@",[userInfo description]); 
     NSLog(@"alert:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]);
     NSLog(@"url:%@",[[userInfo objectForKey:@"aps"] objectForKey:@"url"]); 
     webViewController.url = [NSURL URLWithString:[[userInfo objectForKey:@"aps"] objectForKey:@"url"]];

}

たとえば、WebViewController では次のメソッドが必要です

    - (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [webView loadRequest:requestObj];
    }

もちろん、あなたの WebViewController.h では

    IBOutlet UIWebView *webView;

フルスクリーンで、またはあなたが望むもの...

于 2012-07-30T14:34:32.257 に答える