Xamarin Android FCM Push
This commit is contained in:
19
Assets/AboutAssets.txt
Normal file
19
Assets/AboutAssets.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
Any raw assets you want to be deployed with your application can be placed in
|
||||
this directory (and child directories) and given a Build Action of "AndroidAsset".
|
||||
|
||||
These files will be deployed with you package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
||||
192
FCMTest.csproj
Normal file
192
FCMTest.csproj
Normal file
@@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.props" Condition="Exists('packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}</ProjectGuid>
|
||||
<ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FCMTest</RootNamespace>
|
||||
<AssemblyName>FCMTest</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AndroidApplication>true</AndroidApplication>
|
||||
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
|
||||
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>True</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>None</AndroidLinkMode>
|
||||
<AotAssemblies>false</AotAssemblies>
|
||||
<EnableLLVM>false</EnableLLVM>
|
||||
<BundleAssemblies>false</BundleAssemblies>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<AndroidManagedSymbols>true</AndroidManagedSymbols>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AndroidUseSharedRuntime>False</AndroidUseSharedRuntime>
|
||||
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Mono.Android" />
|
||||
<Reference Include="Mono.Android.Export" />
|
||||
<Reference Include="mscorlib" />
|
||||
<Reference Include="Plugin.Badge, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Badge.Plugin.2.0.0\lib\MonoAndroid\Plugin.Badge.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Plugin.Badge.Abstractions, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Badge.Plugin.2.0.0\lib\MonoAndroid\Plugin.Badge.Abstractions.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Plugin.CurrentActivity, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Plugin.CurrentActivity.1.0.1\lib\MonoAndroid10\Plugin.CurrentActivity.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Xamarin.Android.Support.Annotations, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Annotations.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Annotations.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Compat, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Compat.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Compat.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Core.UI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Core.UI.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Core.UI.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Core.Utils, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Core.Utils.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Core.Utils.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Fragment, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Fragment.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Fragment.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Android.Support.Media.Compat, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Android.Support.Media.Compat.26.0.2\lib\MonoAndroid80\Xamarin.Android.Support.Media.Compat.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Firebase.Common, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Firebase.Common.60.1142.1\lib\MonoAndroid80\Xamarin.Firebase.Common.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Firebase.Iid, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Firebase.Iid.60.1142.1\lib\MonoAndroid80\Xamarin.Firebase.Iid.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.Firebase.Messaging, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.Firebase.Messaging.60.1142.1\lib\MonoAndroid80\Xamarin.Firebase.Messaging.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.GooglePlayServices.Base, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.GooglePlayServices.Base.60.1142.1\lib\MonoAndroid80\Xamarin.GooglePlayServices.Base.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.GooglePlayServices.Basement, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.GooglePlayServices.Basement.60.1142.1\lib\MonoAndroid80\Xamarin.GooglePlayServices.Basement.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Xamarin.GooglePlayServices.Tasks, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Xamarin.GooglePlayServices.Tasks.60.1142.1\lib\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MainActivity.cs" />
|
||||
<Compile Include="MainApplication.cs" />
|
||||
<Compile Include="MyFirebaseIIDService.cs" />
|
||||
<Compile Include="MyFirebaseMessagingService.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Resources\Resource.Designer.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="GettingStarted.Xamarin" />
|
||||
<GoogleServicesJson Include="google-services.json" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Resources\AboutResources.txt" />
|
||||
<None Include="Assets\AboutAssets.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\layout\Main.axml">
|
||||
<SubType>Designer</SubType>
|
||||
</AndroidResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\values\Strings.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\Icon.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Properties\AndroidManifest.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\eyulchon.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||
<Import Project="packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets" Condition="Exists('packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Annotations.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Annotations.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Compat.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Compat.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Core.UI.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.UI.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Core.UI.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.UI.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Core.Utils.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.Utils.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Core.Utils.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.Utils.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Media.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Media.Compat.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Media.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Media.Compat.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Android.Support.Fragment.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Fragment.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Android.Support.Fragment.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Fragment.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.props')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.props'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.GooglePlayServices.Basement.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Basement.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.GooglePlayServices.Basement.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Basement.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.GooglePlayServices.Tasks.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.GooglePlayServices.Tasks.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.GooglePlayServices.Base.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Base.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.GooglePlayServices.Base.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Base.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Firebase.Common.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Firebase.Common.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Common.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Firebase.Iid.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Iid.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Firebase.Iid.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Iid.targets'))" />
|
||||
<Error Condition="!Exists('packages\Xamarin.Firebase.Messaging.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Xamarin.Firebase.Messaging.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets'))" />
|
||||
</Target>
|
||||
<Import Project="packages\Xamarin.Android.Support.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Compat.targets" Condition="Exists('packages\Xamarin.Android.Support.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Compat.targets')" />
|
||||
<Import Project="packages\Xamarin.Android.Support.Core.UI.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.UI.targets" Condition="Exists('packages\Xamarin.Android.Support.Core.UI.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.UI.targets')" />
|
||||
<Import Project="packages\Xamarin.Android.Support.Core.Utils.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.Utils.targets" Condition="Exists('packages\Xamarin.Android.Support.Core.Utils.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Core.Utils.targets')" />
|
||||
<Import Project="packages\Xamarin.Android.Support.Media.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Media.Compat.targets" Condition="Exists('packages\Xamarin.Android.Support.Media.Compat.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Media.Compat.targets')" />
|
||||
<Import Project="packages\Xamarin.Android.Support.Fragment.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Fragment.targets" Condition="Exists('packages\Xamarin.Android.Support.Fragment.26.0.2\build\MonoAndroid80\Xamarin.Android.Support.Fragment.targets')" />
|
||||
<Import Project="packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.targets" Condition="Exists('packages\Xamarin.Build.Download.0.4.9\build\Xamarin.Build.Download.targets')" />
|
||||
<Import Project="packages\Xamarin.GooglePlayServices.Basement.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Basement.targets" Condition="Exists('packages\Xamarin.GooglePlayServices.Basement.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Basement.targets')" />
|
||||
<Import Project="packages\Xamarin.GooglePlayServices.Tasks.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.targets" Condition="Exists('packages\Xamarin.GooglePlayServices.Tasks.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Tasks.targets')" />
|
||||
<Import Project="packages\Xamarin.GooglePlayServices.Base.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Base.targets" Condition="Exists('packages\Xamarin.GooglePlayServices.Base.60.1142.1\build\MonoAndroid80\Xamarin.GooglePlayServices.Base.targets')" />
|
||||
<Import Project="packages\Xamarin.Firebase.Common.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Common.targets" Condition="Exists('packages\Xamarin.Firebase.Common.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Common.targets')" />
|
||||
<Import Project="packages\Xamarin.Firebase.Iid.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Iid.targets" Condition="Exists('packages\Xamarin.Firebase.Iid.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Iid.targets')" />
|
||||
<Import Project="packages\Xamarin.Firebase.Messaging.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets" Condition="Exists('packages\Xamarin.Firebase.Messaging.60.1142.1\build\MonoAndroid80\Xamarin.Firebase.Messaging.targets')" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
24
FCMTest.sln
Normal file
24
FCMTest.sln
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FCMTest", "FCMTest.csproj", "{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BD7563AD-D6FC-40AE-B37C-443DE1C3D4DC}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
102
MainActivity.cs
Normal file
102
MainActivity.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
|
||||
using Android.App;
|
||||
using Android.Gms.Common;
|
||||
using Android.OS;
|
||||
using Android.Util;
|
||||
using Android.Widget;
|
||||
using Firebase.Iid;
|
||||
using Plugin.Badge;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FCMTest
|
||||
{
|
||||
[Activity(Label = "FCMTest", MainLauncher = true, Icon = "@drawable/icon")]
|
||||
public class MainActivity : Activity
|
||||
{
|
||||
const string TAG = "FCMTest MainActivity";
|
||||
|
||||
TextView msgText;
|
||||
|
||||
protected override void OnCreate(Bundle bundle)
|
||||
{
|
||||
Log.Debug(TAG, "google app id: " + Resource.String.google_app_id);
|
||||
Log.Debug(TAG, "google api key: " + Resource.String.google_api_key);
|
||||
if(Intent.Extras != null)
|
||||
{
|
||||
foreach(var key in Intent.Extras.KeySet())
|
||||
{
|
||||
var value = Intent.Extras.GetString(key);
|
||||
Log.Debug(TAG, "Key: {0} Value: {1}", key, value);
|
||||
}
|
||||
|
||||
//if(Intent.Extras.ContainsKey("badge") == true)
|
||||
//{
|
||||
// var badgeCnt = Intent.Extras.Get("badge");
|
||||
// int iBadgeCnt;
|
||||
// int.TryParse(badgeCnt.ToString(), out iBadgeCnt);
|
||||
// CrossBadge.Current.SetBadge(iBadgeCnt);
|
||||
//}
|
||||
}
|
||||
|
||||
base.OnCreate(bundle);
|
||||
SetContentView (Resource.Layout.Main);
|
||||
msgText = FindViewById<TextView>(Resource.Id.msgText);
|
||||
|
||||
IsPlayServicesAvailable();
|
||||
|
||||
var refreshTokenButton = FindViewById<Button>(Resource.Id.refreshTokenButton);
|
||||
refreshTokenButton.Click += delegate {
|
||||
ConfigureFireBase();
|
||||
};
|
||||
|
||||
var logTokenButton = FindViewById<Button>(Resource.Id.logTokenButton);
|
||||
logTokenButton.Click += delegate {
|
||||
Log.Debug(TAG, "InstanceID token: " + FirebaseInstanceId.Instance.Token);
|
||||
};
|
||||
}
|
||||
|
||||
private void ConfigureFireBase()
|
||||
{
|
||||
#if DEBUG
|
||||
Task.Run(() => {
|
||||
var instanceId = FirebaseInstanceId.Instance;
|
||||
instanceId.DeleteInstanceId();
|
||||
Log.Debug(TAG, "{0} {1}", instanceId?.Token?.ToString(), instanceId.GetToken(GetString(Resource.String.gcm_defaultSenderId), Firebase.Messaging.FirebaseMessaging.InstanceIdScope));
|
||||
});
|
||||
|
||||
// For debug mode only - will accept the HTTPS certificate of Test/Dev server, as the HTTPS certificate is invalid /not trusted
|
||||
ServicePointManager.ServerCertificateValidationCallback += (o, certificate, chain, errors) => true;
|
||||
#endif
|
||||
}
|
||||
|
||||
protected override void OnResume()
|
||||
{
|
||||
base.OnResume();
|
||||
|
||||
IsPlayServicesAvailable();
|
||||
}
|
||||
|
||||
public bool IsPlayServicesAvailable()
|
||||
{
|
||||
int resultCode = GoogleApiAvailability.Instance.IsGooglePlayServicesAvailable(this);
|
||||
if(resultCode != ConnectionResult.Success)
|
||||
{
|
||||
if(GoogleApiAvailability.Instance.IsUserResolvableError(resultCode))
|
||||
msgText.Text = GoogleApiAvailability.Instance.GetErrorString(resultCode);
|
||||
else
|
||||
{
|
||||
msgText.Text = "This device is not supported";
|
||||
Finish();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
msgText.Text = "Google Play Services is available.";
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
63
MainApplication.cs
Normal file
63
MainApplication.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
|
||||
using Android.App;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Plugin.CurrentActivity;
|
||||
|
||||
namespace FCMTest
|
||||
{
|
||||
//You can specify additional application information in this attribute
|
||||
[Application]
|
||||
public class MainApplication : Application, Application.IActivityLifecycleCallbacks
|
||||
{
|
||||
public MainApplication(IntPtr handle, JniHandleOwnership transer)
|
||||
:base(handle, transer)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnCreate()
|
||||
{
|
||||
base.OnCreate();
|
||||
RegisterActivityLifecycleCallbacks(this);
|
||||
//A great place to initialize Xamarin.Insights and Dependency Services!
|
||||
}
|
||||
|
||||
public override void OnTerminate()
|
||||
{
|
||||
base.OnTerminate();
|
||||
UnregisterActivityLifecycleCallbacks(this);
|
||||
}
|
||||
|
||||
public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivityDestroyed(Activity activity)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityPaused(Activity activity)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityResumed(Activity activity)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivitySaveInstanceState(Activity activity, Bundle outState)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityStarted(Activity activity)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivityStopped(Activity activity)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
25
MyFirebaseIIDService.cs
Normal file
25
MyFirebaseIIDService.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Firebase.Iid;
|
||||
using Android.Util;
|
||||
|
||||
namespace FCMTest
|
||||
{
|
||||
[Service]
|
||||
[IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
|
||||
public class MyFirebaseIIDService : FirebaseInstanceIdService
|
||||
{
|
||||
const string TAG = "FCMTest MyFirebaseIIDService";
|
||||
public override void OnTokenRefresh()
|
||||
{
|
||||
var refreshedToken = FirebaseInstanceId.Instance.Token;
|
||||
Log.Debug(TAG, "Refreshed token: " + refreshedToken);
|
||||
SendRegistrationToServer(refreshedToken);
|
||||
}
|
||||
|
||||
void SendRegistrationToServer(string token)
|
||||
{
|
||||
// Add custom implementation, as needed.
|
||||
}
|
||||
}
|
||||
}
|
||||
70
MyFirebaseMessagingService.cs
Normal file
70
MyFirebaseMessagingService.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.Media;
|
||||
using Android.Net;
|
||||
using Android.Support.V4.App;
|
||||
using Android.Util;
|
||||
using Firebase.Messaging;
|
||||
using Plugin.Badge;
|
||||
|
||||
namespace FCMTest
|
||||
{
|
||||
[Service]
|
||||
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
|
||||
class MyFirebaseMessagingService : FirebaseMessagingService
|
||||
{
|
||||
const string TAG = "FCMTest MessageService";
|
||||
|
||||
int m_iNotifyNo = 0;
|
||||
|
||||
private void SendLocalNotification(string title, string body)
|
||||
{
|
||||
|
||||
|
||||
Intent intent = new Intent(this, Java.Lang.Class.FromType(typeof(MainActivity)));
|
||||
intent.AddFlags(ActivityFlags.ClearTop);
|
||||
PendingIntent pendingIntent = PendingIntent.GetActivity(this, m_iNotifyNo, intent, PendingIntentFlags.OneShot);
|
||||
if(m_iNotifyNo < 9)
|
||||
m_iNotifyNo++;
|
||||
else
|
||||
m_iNotifyNo = 0;
|
||||
Uri defaultSoundUri = RingtoneManager.GetDefaultUri(RingtoneType.Notification);
|
||||
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
|
||||
.SetSmallIcon(Resource.Drawable.eyulchon)
|
||||
.SetContentTitle(title)
|
||||
.SetContentText(body)
|
||||
.SetAutoCancel(true)
|
||||
.SetSound(defaultSoundUri)
|
||||
.SetContentIntent(pendingIntent);
|
||||
|
||||
NotificationManager notificationManager =
|
||||
(NotificationManager)GetSystemService(Context.NotificationService);
|
||||
|
||||
notificationManager.Notify(m_iNotifyNo+2, notificationBuilder.Build());
|
||||
}
|
||||
|
||||
public override void OnMessageReceived(RemoteMessage message)
|
||||
{
|
||||
Log.Debug(TAG, "onMessageReceived");
|
||||
|
||||
//base.OnMessageReceived(message);
|
||||
|
||||
if(message.Data.Count > 0)
|
||||
{
|
||||
Log.Debug(TAG, "message data payload: " + message.Data);
|
||||
|
||||
string title = message.Data.ContainsKey("title") ? message.Data["title"] : "";
|
||||
string body = message.Data.ContainsKey("body") ? message.Data["body"] : "";
|
||||
SendLocalNotification(title, body);
|
||||
|
||||
string strBadge = message.Data.ContainsKey("badge") ? message.Data["badge"] : "0";
|
||||
int iBadge;
|
||||
int.TryParse(strBadge, out iBadge);
|
||||
CrossBadge.Current.SetBadge(iBadge);
|
||||
}
|
||||
|
||||
if(message.GetNotification() != null)
|
||||
Log.Debug(TAG, "Message Notification Body: " + message.GetNotification().Body);
|
||||
}
|
||||
}
|
||||
}
|
||||
19
Properties/AndroidManifest.xml
Normal file
19
Properties/AndroidManifest.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="FCMTest.FCMTest" android:installLocation="preferExternal" android:versionCode="1" android:versionName="1.0">
|
||||
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26" />
|
||||
<application android:label="FCMTest">
|
||||
<receiver
|
||||
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
|
||||
android:exported="true"
|
||||
android:permission="com.google.android.c2dm.permission.SEND">
|
||||
<intent-filter>
|
||||
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
||||
<category android:name="${applicationId}" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
||||
android:resource="@drawable/eyulchon" />
|
||||
</application>
|
||||
</manifest>
|
||||
30
Properties/AssemblyInfo.cs
Normal file
30
Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Android.App;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("FCMTest")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("FCMTest")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
BIN
Resources/drawable/Icon.png
Normal file
BIN
Resources/drawable/Icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
BIN
Resources/drawable/eyulchon.png
Normal file
BIN
Resources/drawable/eyulchon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
26
Resources/layout/Main.axml
Normal file
26
Resources/layout/Main.axml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?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"
|
||||
android:padding="10dp">
|
||||
<TextView
|
||||
android:text=" "
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/msgText"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:padding="10dp" />
|
||||
<Button
|
||||
android:id="@+id/refreshTokenButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="Refresh Token" />
|
||||
<Button
|
||||
android:id="@+id/logTokenButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:text="Log Token" />
|
||||
</LinearLayout>
|
||||
5
Resources/values/Strings.xml
Normal file
5
Resources/values/Strings.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="Hello">Hello World, Click Me!</string>
|
||||
<string name="ApplicationName">FCMTest</string>
|
||||
</resources>
|
||||
42
google-services.json
Normal file
42
google-services.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "1094229055585",
|
||||
"firebase_url": "https://fmctest-13b5c.firebaseio.com",
|
||||
"project_id": "fmctest-13b5c",
|
||||
"storage_bucket": "fmctest-13b5c.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1094229055585:android:15dde39904bb2192",
|
||||
"android_client_info": {
|
||||
"package_name": "FCMTest.FCMTest"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "1094229055585-pvr896cvt92gm7cbekuc716567u07hei.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyCYaRvS5KNuoqXYPmWzcqgmwIZq07JDkB4"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 1,
|
||||
"other_platform_oauth_client": [ ]
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
18
packages.config
Normal file
18
packages.config
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Plugin.CurrentActivity" version="1.0.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Annotations" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Compat" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Core.UI" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Core.Utils" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Fragment" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Android.Support.Media.Compat" version="26.0.2" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Badge.Plugin" version="2.0.0" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Build.Download" version="0.4.9" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Firebase.Common" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Firebase.Iid" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.Firebase.Messaging" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.GooglePlayServices.Base" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.GooglePlayServices.Basement" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
<package id="Xamarin.GooglePlayServices.Tasks" version="60.1142.1" targetFramework="monoandroid80" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user