是否可以创建应用程序(单击图标时)只需在浏览器中加载页面?

时间:2014-01-16 04:02:38

标签: android ios mobile web

我已经构建了一个支持移动设备的网站,该网站可以完成应用程序可以执行的大部分功能。然而,有些人仍然喜欢在手机上使用“应用”的想法,因为它会直接加载“应用”(网站),而不是让他们加载浏览器并输入网址。

有没有办法在Android和iOS中以这种方式创建应用程序?我们的想法是只有一个反映网站的自定义图标,一旦点击它就会加载浏览器,并显示已输入网站的网址。

在Android和iOS中似乎都很简单,但滚动浏览我的参考书只会产生一些概念,例如将可点击的URL放在应用程序的“主屏幕”中,而不是轻松的重定向。

4 个答案:

答案 0 :(得分:2)

对于iOS,“移动网络外壳”类应用程序将在应用审核流程中被拒绝。

来自App review guidelines document(您需要使用AppleId登录),

  2.12应用程序不是非常有用,独特,只是简单的网站捆绑为应用程序,或不提供任何持久的娱乐价值可能会被拒绝

这意味着仅仅包裹UIWebView以显示移动网站但不支持任何其他功能/目的的应用程序将被拒绝。即使通过Safari浏览器也可以实现这样的shell应用程序,允许“将网站添加到主屏幕”。

之前有关于SO的类似问题,请仔细阅读:Does Apple reject “mobile web shell” applications?

希望这有帮助!

答案 1 :(得分:1)

对于Android,我会说@A--C的评论是正确的。您可以做的是改善用户体验,只有一项活动是透明的。在onCreate函数中有一个显示一些消息的进度对话框。由于它透明,它只会显示对话框。然后在onCreate内打开浏览器。用户似乎只是打开浏览器。要进行单个透明活动,请执行以下操作:

<activity android:name=".your.activity.declaration.here" 
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

基本上将android:theme="@android:style/Theme.Translucent.NoTitleBar"添加到清单中的活动声明中。

答案 2 :(得分:1)

如果您想构建原生iOS应用,可以使用简单的UIWebView加载页面。

例如,在你的根UIViewController中:

NSString* url = @"http://google.com";
NSURL* nsUrl = [NSURL URLWithString:url];
NSURLRequest* request = [NSURLRequest requestWithURL:nsUrl cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30];

[self.webView loadRequest:request];

答案 3 :(得分:1)

作为免责声明,我完全不知道苹果是否会接受这个应用程序商店,但实现这样的事情非常简单。这是我在appDelegate中更改的唯一代码:

#import "AppDelegate.h"
#import "WebViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    WebViewController *webVC = [[WebViewController alloc] initWithURLString:@"http://www.google.com"];
    self.window.rootViewController = webVC;

    [self.window makeKeyAndVisible];
    return YES;
}

然后我将UIViewController子类化为以下.h和.m文件:

#import <UIKit/UIKit.h>

@interface WebViewController : UIViewController <UIWebViewDelegate> {
    NSString *_url;
}

- (id)initWithURLString:(NSString *)URLString;

@end


#import "WebViewController.h"

@interface WebViewController ()

@end

@implementation WebViewController

- (id)initWithURLString:(NSString *)URLString {
    self = [super init];

    _url = URLString;

    return self;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];
    webView.autoresizingMask = UIViewAutoresizingFlexibleHeight + UIViewAutoresizingFlexibleWidth;
    webView.delegate = self;
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_url]]];

    [self.view addSubview:webView];
}

-(void)webViewDidStartLoad:(UIWebView *)webView {
    // perhaps show some sort of loading message here
}

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    // hide the loading message here
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    // also hide the loading message here and present the user with an appropriate error message
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    return YES;
}

@end

这导致以下结果:

enter image description here

希望有所帮助!