15

では、完全に機能するレスポンシブ Ruby Rails Web アプリがあるとしましょう。このアプリは動作し、携帯電話で見栄えがします。残念ながら、この Web アプリはネイティブ アプリではないため、携帯電話のアプリ ストアからは見ることができません。技術的には、ブラウザを開くスマートフォンにアイコンを配置することもできますが、明らかにこれは最適ではありません。

ナビゲーション バーのない、本質的に単なるブラウザーであるネイティブ アプリ (Android、iPhone) を作成する方法はありますか? このブラウザーのラッパーは、Web アプリをロードするだけで、ブラウザーを開いたときと同じように動作します。

Phonegap や Titanium などのオプションを検討しましたが、かなりの量の書き直しが必要なようで、そのための資金はほとんどありません。

4

4 に答える 4

16

iOS はよくわかりませんが、Android なら簡単にできます。

まず、これはあなたの活動です:

package com.example.my_browser;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView browser = (WebView)findViewById(R.id.browser);
        browser.loadUrl("http://google.com"); //Replace google.com with you webapp's URL
    }
}

これはあなたの main.xml レイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
    >
    <WebView
        android:id="@+id/browser"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

また、AndroidManifest.xml でインターネット アクセス許可を要求する必要があります。

<uses-permission android:name="android.permission.INTERNET" />

これをエミュレーターでテストしたところ、動作します。

于 2013-02-26T23:57:48.673 に答える
11

この答えはiOS用です。

コードを1行も記述せずに、デバイスのホーム画面にWebサイトのアイコンを表示できます(UIWebView、ネイティブコーディング、XCodeはありません)。

  1. http://www.apple.com/support/iphone/enterprise/からiPhone構成ユーティリティをダウンロードします。
  2. iPhone構成ユーティリティを起動し、左側のメニューから[構成プロファイル]を選択します
  3. 新しいプロファイルの[全般]セクションで、名前(MyWebsiteアプリ)と識別子(com.mycompany.coolapp)を入力します。組織名と説明を追加することもできます。
  4. 下にスクロールして、[Webクリップ]セクションを選択します。
  5. [ラベル]フィールドに、ホーム画面に表示される名前を入力できます。
  6. URLは、Webサイト/WebアプリのURLになります。
  7. ホーム画面のアイコンとして使用するアイコンを選択します。少なくとも114x114ピクセルの解像度を使用してください。
  8. 「フルスクリーン」を選択すると、Webアプリを起動したときにSafariのナビゲーションバーとアドレスバーが非表示になるため、実際の「アプリ」を作成できます。
  9. 「エクスポート」ボタンをクリックします。プロファイルに署名するかどうかを決定できます(エンドユーザーがプロファイルをインストールしたときに表示されます)。
  10. .mobileconfigファイルを保存してWebサーバーにアップロードするか、メールでエンドユーザーに送信します。
  11. エンドユーザーが自分のデバイスで.mobileconfigファイルを開くと、システムは構成プロファイルをインストールするように要求します。インストール後、Webサイトを指すホーム画面アイコンが作成されます。

2017年現在のアップデートiPhoneConfigurationUtility は、AppStoreから無料でダウンロードできるAppleConfiguratorに置き換えられました。Apple Configuratorで説明したのと同じ方法で、アプリで[ファイル]-> [新しいプロファイル]を選択して、新しい構成プロファイルを作成できます。

于 2013-03-01T14:07:27.113 に答える
4

編集2
@MrTJがコメントで言ったように。どうやら Apple は単純な「ウェブサイト ラッパー」アプリケーションを許可しないようです。したがって、私の回答の残りの部分で説明されているようにRubyを移植するか、アプリケーションをネイティブに移植するか、@MrTJが彼の回答で説明するようなWebアプリを実行することしかできません。REST のような Web サービスでサポートされているネイティブに移植することが、おそらく最善の解決策です。Web アプリケーションも優れていますが、通常はネイティブ アプリケーションのが優れています。どのようなユーザー エクスペリエンスを提供したいかによって異なります。
編集終了 2

編集 1
もっと注意深く読む必要があります。インターネットにアクセスする必要なく、アプリケーションを組み込みたいと仮定して、あなたの質問に答えました。それがあなたがやろうとしていることではない場合、それは間違いなく可能です.

webview を持ち、サイトのベース URL をロードするアプリケーションを作成するだけです。おそらく、常に戻るボタンなどを備えた特別なバージョンのサイトを作成して、ユーザーがサイトの隅で動けなくなることがないようにしたいと思うでしょう (ナビゲーションバーを非表示にしたいため)。

また、個人的にはこれはしません。できますが、おそらくすべきではありません。ユーザーがインターネットに接続していないときに何をすべきかを処理する必要があります。また、どこでも使用できるわけではないアプリケーションに (潜在的に) お金を払ってしまうと、満足度が低下する可能性があります。ネイティブ アプリケーションは、販売やパフォーマンスが大幅に向上する傾向があります。
編集終了 1

この質問に対する私の個人的な反応

クールな質問。個人的には、私は Ruby や Rails のファンではありません (私はどちらかというと Python 派ですが、Python のおかげでこの状況について何か知っているのです)、これはかなりクールな問題です。

自問する質問

これは可能ですか? おそらく

それは良い考えですか? おそらくない

努力する価値はありますか? おそらくない

そして最も重要なことは、Apple はあなたにそれを売らせてくれるだろうか? ....たぶん、しかし、このようなものについては、試してみないとわかりません....

何が必要

  1. プロトコルを使用してネイティブ アプリケーションと通信する WebView。これは、ブラウザで iFrame と通信するために使用される URL ハッシュ タグ ハックや、PhoneGap が WebView と通信するために使用するプロトコルのようなものです。

  2. Ruby インタープリターの組み込みバージョン。人々は、PythonJavascriptCoreインタープリターの両方を使用して iOS でこれを行ってきました。Apple はこれを許可しないと言う人もいますが、それはもはや真実ではありません。iOS 用に特別に Ruby をコンパイルする必要があります。これはおそらく面倒ですが、Python/Javascript の実装に基づいて実装すれば、最終的には動作するようになるでしょう。

編集
この回答に関連する別の SO の質問/回答
iOS アプリケーションに JavaScript エンジンを埋め込む
end edit

  1. Railsの組み込みバージョン...頑張ってください:)

  2. Web サーバーなしで Rails アプリをトリガーする方法 (iPhone でローカルに apache を実行することはおそらく不可能であり (困難であり、おそらくすぐにクラッシュする可能性があります)、Android では絶対に実行できません)。各ビューを何らかの方法で手動でトリガーし、出力を文字列またはファイルにパイプして、その文字列 (HTML) またはファイルを WebView にロードする必要があります。

  3. Rails アプリケーションでナビゲーションをトリガーする方法。これには、WebView からリンクが押されたことをキャッチし (iOS では URL の変更を監視できます)、適切な Rails ビューをトリガーしてその HTML を生成する必要があります。

問題

  1. Ruby と Rails はどちらも非常に重いです。私が見たほとんどの実装では、少なくとも 256 MB の RAM が必要です。iOS は、起動時にこの量のメモリを使用しようとすると、アプリケーションを即座に強制終了します。Android はおそらくそれをはるかに適切に処理せず、アプリケーションの実行中のある時点で予期せずクラッシュするだけです。

  2. Android はネイティブ コンパイル コードを実行しません。これは、JRuby を実行する必要があることを意味します。これにより、インタープリター言語がインタープリター言語で実行されたままになります ( 「モバイル デバイスでは地獄のように遅い」と読みます)。

  3. これには、より多くの Ruby、いくつかの Javascript、およびより多くの Java または Objective-C を作成する必要があります。言い換えれば、しないでください。アプリケーションが何をするかを理解し、それを移植します。

キーラーニング

これはおそらく、まともな開発者が「単純な Web アプリケーション」に費やすよりもはるかに多くの労力を必要とするでしょう。いずれにせよ、この仕事を成し遂げるにはネイティブ開発が必要になるため、ネイティブ開発を学ぶ方がはるかに良いでしょう。

于 2013-02-27T21:45:29.267 に答える
0

はい、iOS の場合は、UIWebView フルスクリーンをロードし、UIWebView の現在の URL を Web アプリの場所に変更するだけです。特定のURLでUIWebviewを起動する

私はアンドロイドについて何も知りませんが、どうやらそれは同じプロセスです...ここに行きます:AndroidのxmlレイアウトファイルからWebViewにURLを設定する方法は?


iOS アプリと Web サイトの間で通信するには、stringByEvaluatingJavaScriptFromStringここで説明したものを使用できます: Javascript 変数を Objective-C に渡す

Android でこれを行うには、この質問に対する他の回答を参照してください。回答には既にコードが記載されています。

于 2013-02-26T22:53:22.577 に答える