GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - donbenjamin/browser-ios: Brave iOS Browser

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

7,315 Commits
7,315 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
BraveShareTo
BraveShareTo
 
 
Certificates
Certificates
 
 
Client.xcodeproj
Client.xcodeproj
 
 
Client
Client
 
 
ClientTests
ClientTests
 
 
Crashlytics.framework
Crashlytics.framework
 
 
Fabric.framework
Fabric.framework
 
 
L10nSnapshotTests
L10nSnapshotTests
 
 
MarketingUITests
MarketingUITests
 
 
NativeRefTests
NativeRefTests
 
 
Providers
Providers
 
 
ReadingList
ReadingList
 
 
ReadingListTests
ReadingListTests
 
 
Shared
Shared
 
 
SharedTests
SharedTests
 
 
Storage
Storage
 
 
StorageTests
StorageTests
 
 
ThirdParty
ThirdParty
 
 
UITests
UITests
 
 
Utils
Utils
 
 
analytics
analytics
 
 
brave
brave
 
 
fastlane
fastlane
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
AUTHORS
AUTHORS
 
 
AddToFavoritesActivity.swift
AddToFavoritesActivity.swift
 
 
AlertPopupView.swift
AlertPopupView.swift
 
 
Cartfile
Cartfile
 
 
Cartfile.resolved
Cartfile.resolved
 
 
Client-Bridging-Header.h
Client-Bridging-Header.h
 
 
DeviceDetector.swift
DeviceDetector.swift
 
 
DeviceModelDetector.swift
DeviceModelDetector.swift
 
 
Info.plist
Info.plist
 
 
L10nSnapshotTests-Info.plist
L10nSnapshotTests-Info.plist
 
 
LICENSE
LICENSE
 
 
LaunchScreen.storyboard
LaunchScreen.storyboard
 
 
README.md
README.md
 
 
UIViewExtensions.swift
UIViewExtensions.swift
 
 
ViewUtil.swift
ViewUtil.swift
 
 
carthage.sh
carthage.sh
 
 
checkout.sh
checkout.sh
 
 

Repository files navigation

Brave iOS Browser

Download in the App Store

Brave is based on Firefox iOS, most of the Brave-specific code is in the brave dir

Deprecation Notice

This project is currently being deprecated and is being replaced by a new codebase. Please see brave-ios for our continued development work.

As of today, this is still the App Store version of Brave. High priority issues will continue to be fixed until Brave 2.0 replaces this repo on the App Store.

Labels

When looking at browser-ios issues some issues have been labeled with:
v2 Relevant: Issues that might be relevant for the new codebase. Some of these will be fixed here, and others may not be.
v2 Only: Issues that will not be fixed on this codebase, but will be addressed in the new repo.

Why the Change?

The primary reason for this project's deprecation is to support Apple's WKWebView. Brave iOS is still utilizing UIWebView, which contains many website comptability issues. Although it is possible to handle this upgrade on browser-ios, rebuilding from a new fork provides many useful advantages. The complexity of upgrading to WKWebView touches most of the current project, and this seemed like an obvious time to switch project bases.

Adding Brave to your app to open links

Either ensure your app supports opening urls in a share menu or use this project https://github.com/brave/ios-open-thirdparty-browser to open links directly.

Setup

1. Install Xcode from the AppStore

2. Install the latest LTS version of Node.js

3. Install Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

4. Install Carthage:

brew install carthage

5. Download the source code:

git clone https://github.com/brave/browser-ios.git # this will download git if it isn't currently installed

6. Run the following commands:

cd browser-ios
./checkout.sh # this pulls Carthage dependencies
(cd brave && ./setup.sh your.fake.appid) # put in a fake unique app id if you want to build to device
open Client.xcodeproj

Note: building your own ad-hoc builds is supported see user device build

You will need a Apple developer account to run on your device.

Crash reporting using Fabric

To enable, add ~/.brave-fabric-keys with 2 lines, the API key and build secret. Re-run setup.sh and the project will be generated to use Fabric and Crashlytics frameworks.

Tests

Run Product>Test in Xcode to do so. Not all Firefox tests are passing yet.

Contribution Notes

Most of the code is in the brave/ directory. The primary design goal has been to preserve easy merging from Firefox iOS upstream, so hopefully code changes outside of that dir are minimal.

To find changes outside of brave/, look for #if BRAVE / #if !BRAVE (#if/#else/#endif is supported by Swift).

Adding Carthage modules

  1. Add line into Cartfile, run carthage bootstrap to update Cartfile.resolved
  2. Verify that your new module has been added to Cartfile.resolved
  3. Run checkout.sh
  4. In the Xcode Project, go to Client target settings, open the Build Phases tab and add a line such as
$(SRCROOT)/Carthage/Build/iOS/FRAMEWORKNAME.framework

Provisioning Profiles using a Team account

(This section doesn't apply to individual developer accounts, Xcode managed profiles seem to work fine in that case.)

Do not use 'Xcode managed profiles', there is no advantage to this, and debugging problems with that system is a dead end due to lack of transparency in that system.

brave/build-system/profiles has some handy scripts to download the adhoc or developer profiles and install them.

JS Tips

For anyone working with JS in iOS native, I recommend running and debugging your JS in an attached JS console. (Not using an edit/compile/debug cycle in Xcode). When you run from Xcode any iOS web view in the simulator (or attached device), you can then attach from Safari desktop (the Develop menu), and you get a JS console to work in.

We have various JS interpreters available: UIWebView, JavaScriptCore, and WKWebView.

The first is required if we are running JS on the web page, since we are using UIWebView. JavaScriptCore is a stand-alone JS engine that I believe is more up-to-date than UIWebView's. WKWebView will have the most modern JS engine, but requires instantiating a WKWebView for this purpose, which we would prefer to avoid as that is a heavy approach. UIWebView's JS engine is a few years old, and is quite primitive.

None of these are comparable to Safari iOS's JS engine, which is highly up-to-date in its capabilities but is not available to us.

Release Builds

brave/build-system/build-archive.sh does everything. When that completes, the Fabric app detects a new archive and asks to distribute to testers.

Misc Tips

If you get the dreaded "Launch Services Error 0": open ~/Library/Logs/CoreSimulator/CoreSimulator.log for info

Go to the Brave app folder for the most recently run simulator:

cd ~/Library/Developer/CoreSimulator/Devices && cd `ls -t | head -1` && cd data/Containers/Data/Application && cd `find . -iname "*brave*" | head -1 | xargs -I{} dirname {}`

About

Brave iOS Browser

www.brave.com

Resources

Readme
MPL-2.0 license
Activity

Stars

0 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.