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