bcc-code / bmm-app

[BMM] App for iOS and Android to consume audio content from BCC
GNU Affero General Public License v3.0
8 stars 4 forks source link
android-app bmm dotnet ios-app xamarin

BMM Mobile Apps

This repository contains an app to consume the content from BMM on your phone. It uses Xamarin to deliver apps for Android and iOS.

If you have a feature request please submit it at User Voice. If you find a bug feel free to create an issue or submit a pull request.

Getting started

Warning: if you want to run your locally built version of BMM on your iPhone, you need an Developer license from Apple (~100$/year). Even then, the process to get it to work is quite complicated and you should not rely on our help.

  1. Download and install Visual Studio (We use Jetbrains Rider but if you do not have experience we recommend to use Visual Studio)
  2. Setup Android and iOS environment

Branching model

We use git flow as our branching model. We use the following naming conventions:

Creating a pull request

We work with pull requests so other project members can review your code before it appears in the develop branch.

  1. Create a feature branch for your feature according to the naming convention above.
  2. Commit your changes and push your changes to the repository in the features branch.
  3. Create a pull request to the develop branch.
  4. Link the issue and the pull request

Your pull requests should be small, ideally below 400 lines of code but never more than one feature.

After you submitted a pull request the code will be reviewed by some selected people. After your pull request is submitted, make sure you check back regularly and have notifications enabled so you get notified whenever someone adds a comment to your pull request. When the reviewers are satisfied and there are no more comments or tasks, the pull request will be merged. You are not done with implementing the feature before the pull request is merged.

DOs and DON'TS

Continuous delivery

App Center

We use App Center for:

  1. Gathering crashes: Only by install the packages App Center will automatically save the crashes with the respective report, nevertheless if there is some specific crash that is common, there should be an specific log for it
  2. Logging:
    • Errors: It gives more specific information about common errors that may occur
    • Debug: It gives specific information about data that may be recolected while debugging
    • Information: It gives extra information about the different functions and sections that are being use
    • Warnings It gives extra information about the warning that are boing use and how can they affect the application
  3. UI Tests

How can I see the traffic from my devices?

Windows

Some video tutorials are available here: https://www.telerik.com/videos/fiddler Docs for iOS: https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForiOS Docs for Android: https://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureForAndroid

MacOS

https://proxyman.io - it's awesome

Firebase

How can I test Firebase Analytics (Debug View), Firebase Remote Config and Notifications on DEBUG mode and simulator for iOS?

  1. Go to BMM.UI.iOS -> Properties.
  2. Go to iOS Bundle Signing and make sure you have set Signing Identity and Provisional Profile correctly.
  3. Set up Custom Entitlements in iOS Bundle Signing. There is Entitlements.plist in iOS project which should be set there.

To use Notifications, you must do this additional step too:

  1. Make sure you use 'RegisterForNotification(app)' method in AppDelegate.

To use Firebase Analytics Debug View - follow instruction below: How to set DebugView for Analytics

Updating Firebase packages

When the app doesn't start after upgrading a firebase package or throws some weird message clean this folder: ~/Library/Caches/XamarinBuildDownload

Notes about simulator / emulator

  1. Android: Firebase can't be accessed leading to an error when opening Profile
  2. iOS: Audio can't be played in the simulator