我已经构建了一个支持移动设备的网站,该网站可以完成应用程序可以执行的大部分功能。然而,有些人仍然喜欢在手机上使用“应用”的想法,因为它会直接加载“应用”(网站),而不是让他们加载浏览器并输入网址。
有没有办法在Android和iOS中以这种方式创建应用程序?我们的想法是只有一个反映网站的自定义图标,一旦点击它就会加载浏览器,并显示已输入网站的网址。
在Android和iOS中似乎都很简单,但滚动浏览我的参考书只会产生一些概念,例如将可点击的URL放在应用程序的“主屏幕”中,而不是轻松的重定向。
答案 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
这导致以下结果:
希望有所帮助!