Skip to content

Commit 069a682

Browse files
Resolve conflicts
2 parents 347e96c + daeed79 commit 069a682

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1487
-238
lines changed

mindbox/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
## 0.0.1
1+
## 0.1.0
22

3-
* TODO: Describe initial release.
3+
* Initial release.

mindbox/LICENSE

Lines changed: 75 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,75 @@
1-
MIT License
2-
3-
Copyright (c) 2020 Mindbox
4-
5-
Permission is hereby granted, free of charge, to any person obtaining a copy
6-
of this software and associated documentation files (the "Software"), to deal
7-
in the Software without restriction, including without limitation the rights
8-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9-
copies of the Software, and to permit persons to whom the Software is
10-
furnished to do so, subject to the following conditions:
11-
12-
The above copyright notice and this permission notice shall be included in all
13-
copies or substantial portions of the Software.
14-
15-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
1+
# Лицензионный договор (открытая лицензия) о предоставлении права использования программного обеспечения
2+
3+
## 1. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
4+
5+
1.1 В Соглашении термины и определения используются в следующих значениях:
6+
7+
- Договор – абонентский договор оказания услуг/оферта на оказание услуг подписки на сервис Mindbox между Пользователем и Правообладателем;
8+
- Использование – объем прав Пользователя по Соглашению;
9+
- Использовать – осуществлять права Пользователя по Соглашению;
10+
- Пользователь – юридическое или физическое лицо, осуществляющее Использование программы;
11+
- Правообладатель – общество с ограниченной ответственностью «Майндбокс» (ОГРН 1097746380380);
12+
- Программа, Программа (исходный код), исходный код – программное обеспечение SDK Mindbox для передачи данных из мобильного приложения в CDP Mindbox, исключительные права на которые принадлежат Правообладателю;
13+
- Соглашение – этот лицензионный договор (открытая лицензия);
14+
- Стороны, Сторона – Правообладатель и/или Пользователь;
15+
- Некоммерческое использование – Использование Программы без цели извлечения прибыли.
16+
- Коммерческое использование – Использование Программы с целью извлечения прибыли.
17+
18+
19+
## 2. ПРЕДМЕТ СОГЛАШЕНИЯ
20+
21+
2.1. По Соглашению Правообладатель предоставляет неограниченному количеству Пользователей простую (неисключительную) лицензию на Использование Программы в предусмотренных Соглашением пределах.
22+
23+
24+
2.2. Соглашение является договором присоединения и размещено в репозитории Программы Правообладателя на https://github.com/, чтобы условия были доступны неопределенному кругу лиц, и Пользователь мог ознакомиться с ними перед началом Использования Программы. Акцептом условий Соглашения будет считаться любое использование Программы Пользователем, в том числе не разрешенное по Соглашению, включая, но не ограничиваясь, копирование, воспроизведение, переработку исходного кода (Программы), установку и загрузку Программы.
25+
26+
27+
## 3. Права, передаваемые Пользователю
28+
29+
3.1. Правообладатель размещает исходный код Программы по ссылкам:
30+
- репозиторий: https://github.com/mindbox-moscow/android-sdk;
31+
- менеджер пакетов: https://search.maven.org/search?q=mindbox.
32+
33+
Исходный код в менеджере пакетов и в репозитории в ветке “Master” является “production ready”.
34+
35+
Пользователь понимает, что исходный код в репозитории, не лежащий в ветке “Master”, не является “production ready”.
36+
37+
Программа (исходный код) предоставляется Пользователю по принципу “as is” (“как есть”), то есть Правообладатель не обеспечивает работоспособность кода и не дает каких-либо гарантий в отношении безошибочной и бесперебойной работы Программы, соответствия Программы целям и ожиданиям Пользователя.
38+
39+
40+
3.2. Пользователь вправе использовать Программу (исходный код) для Некоммерческого использования без Договора с Правообладателем в следующем объеме:
41+
42+
- чтение исходного кода человеком.
43+
44+
45+
3.3. Пользователь вправе использовать Программу (исходный код) для Коммерческого использования только при наличии Договора с Правообладателем и в следующем объеме:
46+
- чтение исходного кода человеком;
47+
- копирование, воспроизведение исходного кода “production ready” (Программы) внутри программного обеспечения (мобильное приложение) Пользователя для интеграции с программным обеспечением/внутри программного обеспечения Правообладателя — Mindbox.
48+
49+
После прекращения Договора Пользователь вправе не удалять Программу (исходный код) или ее копию при условии обеспечения запрета вызова Программы (исходного кода), чтобы у была возможность легко возобновить Использование. Пользователь вправе возобновить Использование сохраненной Программы (исходного кода) при заключении нового Договора.
50+
51+
3.4 Для получения дополнительных прав, не предусмотренных Соглашением, в том числе для отправления запросов, предложений Пользователь вправе связаться с Правообладателем по известным ему каналам связи, например, можно использовать “pull request”, “issue” на https://github.com/ или отправить имейл на [email protected].
52+
53+
Отправляя запрос на слияние (“merge”) предложенного кода с “production ready” через “pull request” на https://github.com/, Пользователь гарантирует и заверяет Правообладателя, что не нарушает прав третьих лиц, а также отчуждает права на предложенный им код в пользу Правообладателя в обмен на предоставление прав Использования по Соглашению без получения вознаграждения в денежной форме.
54+
55+
3.5. Пользователь заверяет и гарантирует Правообладателю, что не будет использовать Программу (исходный код) за пределами прав и (или) на иных условиях, чем предусмотрено Соглашением, в том числе не будет использовать ее для Коммерческий целей без Договора с Правообладателем, не будет предоставлять, отчуждать третьим лицам права на использование Программы либо нового результата интеллектуальной деятельности, созданного на основе Программы.
56+
57+
58+
## 4. Ограничение ответственности Правообладателя
59+
60+
4.1. Поскольку права на Использование Программы (исходного кода) предоставляются Пользователю бесплатно и по принципу “as is” (“как есть”), Правообладатель не несет ответственность за убытки, причиненные Пользователю и третьим лицам в результате Использования или невозможности Использования Программы, в том числе если Программа не работает безошибочно, бесперебойно, не соответствует целям и ожиданиям Пользователя.
61+
62+
63+
4.2. Правообладатель не возмещает Пользователю косвенные, непрямые убытки, упущенную выгоду. Общая максимальная ответственность Правообладателя по Соглашению ограничивается 1 (одним) рублем РФ.
64+
65+
## 5. Применимое право и разрешение споров
66+
67+
5.1. К Соглашению применяется материальное право Российской Федерации. Все споры из Соглашения и в связи с ним подлежат передаче в суд по месту нахождения Правообладателя.
68+
69+
## 6. Заключительные положения
70+
71+
6.1. Соглашение может быть изменено Правообладателем в любое время без каких-либо ограничений и без специального уведомления Пользователя. Новая редакция Соглашения вступает в силу с даты ее размещения в репозитории Программы Правообладателя на https://github.com/ либо с даты ее доведения до сведения Пользователя Правообладателем в иной удобной форме.
72+
73+
6.2 Для случаев Некоммерческого использования Программы Соглашение действует бессрочно.
74+
75+
6.3 Для случаев Коммерческого использования Программы Соглашение действует до окончания срока действия Договора.

mindbox/README.md

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,77 @@
1-
# mindbox
1+
This plugin is a wrapper over the native Mindbox([iOS](https://github.com/mindbox-moscow/ios-sdk),
2+
[Android](https://github.com/mindbox-moscow/android-sdk)) libraries that allows to
3+
receive and handle push notifications.
24

3-
Mindbox SDK.
5+
> Flutter Mindbox plugin is in beta.
6+
>
7+
## Features
8+
9+
* Receive and show push notification in both mobile platforms.
10+
* Receive push notification data(links) in Flutter.
11+
12+
## Getting started
13+
14+
This plugin depends on the configuration of push notifications on native platforms. It's necessary
15+
to follow the steps specified in the guide:
16+
17+
* [Mindbox Flutter SDK](https://developers.mindbox.ru/docs/flutter-sdk)
18+
19+
## Usage
20+
21+
### Initialization
22+
23+
```dart
24+
// Import `mindbox.dart`
25+
import 'package:mindbox/mindbox.dart';
26+
27+
void main() {
28+
WidgetsFlutterBinding.ensureInitialized();
29+
// Initialization configuration
30+
final config = Configuration(
31+
domain: "your domain",
32+
endpointIos: "iOs endpoint",
33+
endpointAndroid: "Android endpoint",
34+
subscribeCustomerIfCreated: true);
35+
// Initialization
36+
Mindbox.instance.init(configuration: config);
37+
38+
runApp(MyApp());
39+
}
40+
```
41+
42+
### Handling push click
43+
44+
```dart
45+
Mindbox.instance.onPushClickReceived((link) {
46+
switch (link) {
47+
case 'mindbox.cloud':
48+
Navigator.push(context, MaterialPageRoute(builder: (context) => ContentPage()));
49+
break;
50+
case 'mindbox.cloud/user':
51+
Navigator.push(context, MaterialPageRoute(builder: (context) => ProfilePage()));
52+
break;
53+
default:
54+
Navigator.push(context, MaterialPageRoute(builder: (context) => HomePage()));
55+
}
56+
});
57+
```
58+
59+
### Getting device UUID
60+
61+
```dart
62+
Mindbox.instance.getDeviceUUID((uuid) {
63+
setState(() {
64+
_deviceUUID = uuid;
65+
});
66+
});
67+
```
68+
69+
### Getting APNS/FMS token
70+
71+
```dart
72+
Mindbox.instance.getDeviceUUID((uuid) {
73+
setState(() {
74+
_deviceUUID = uuid;
75+
});
76+
});
77+
```

mindbox/example/android/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ GeneratedPluginRegistrant.java
1111
key.properties
1212
**/*.keystore
1313
**/*.jks
14+
/app/google-services.json

mindbox/example/android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
2626
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
2727

2828
android {
29-
compileSdkVersion 30
29+
compileSdkVersion 31
3030

3131
compileOptions {
3232
sourceCompatibility JavaVersion.VERSION_1_8
@@ -45,7 +45,7 @@ android {
4545
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
4646
applicationId "cloud.mindbox.mindbox_example"
4747
minSdkVersion 16
48-
targetSdkVersion 30
48+
targetSdkVersion 31
4949
versionCode flutterVersionCode.toInteger()
5050
versionName flutterVersionName
5151
}

mindbox/example/android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
android:label="mindbox_example"
55
android:icon="@mipmap/ic_launcher">
66
<activity
7+
android:exported="true"
78
android:name=".MainActivity"
89
android:launchMode="singleTop"
910
android:theme="@style/LaunchTheme"

mindbox/example/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
buildscript {
2-
ext.kotlin_version = '1.3.50'
2+
ext.kotlin_version = '1.4.20'
33
repositories {
44
google()
55
mavenCentral()

mindbox/example/ios/Podfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ flutter_ios_podfile_setup
3030
target 'Runner' do
3131
use_frameworks!
3232
use_modular_headers!
33-
3433
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
3534
end
3635

mindbox/example/lib/main.dart

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,43 +17,20 @@ class MyApp extends StatefulWidget {
1717
class _MyAppState extends State<MyApp> {
1818
String _sdkVersion = "";
1919

20-
// Initialization fields
21-
String domain = "";
22-
String endpointIos = "";
23-
String endpointAndroid = "";
24-
2520
@override
2621
void initState() {
2722
super.initState();
28-
initMindbox();
23+
getSdkVersion();
2924
}
3025

31-
Future<void> initMindbox() async {
32-
String sdkVersion = 'Unknown';
33-
34-
final configuration = Configuration(
35-
domain: domain,
36-
endpointIos: endpointIos,
37-
endpointAndroid: endpointAndroid,
38-
subscribeCustomerIfCreated: false,
39-
);
40-
41-
try {
42-
sdkVersion = await Mindbox.instance.sdkVersion;
43-
44-
setState(() {
45-
_sdkVersion = sdkVersion;
46-
});
47-
48-
await Mindbox.instance.init(configuration: configuration);
49-
50-
} catch (e) {
51-
print(e);
52-
}
26+
Future<void> getSdkVersion() async {
27+
String sdkVersion = await Mindbox.instance.sdkVersion;
5328

5429
if (!mounted) return;
5530

56-
31+
setState(() {
32+
_sdkVersion = sdkVersion;
33+
});
5734
}
5835

5936
@override

mindbox/lib/mindbox.dart

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,34 @@ class Mindbox {
3131

3232
/// Returns SDK version
3333
///
34-
/// On error returns "Unknown" on iOs platform and empty string("") on Android
34+
/// On error returns "Unknown" on iOS platform and empty string("") on Android
3535
Future<String> get sdkVersion async => MindboxPlatform.instance.sdkVersion;
3636

3737
/// Initializes the SDK for further work
3838
///
39-
/// Read more about parameter [Configuration]
39+
/// Read more about parameter [Configuration].
4040
Future<void> init({required Configuration configuration}) async {
4141
await MindboxPlatform.instance.init(configuration: configuration);
4242
}
43+
44+
/// Method to obtain device UUID.
45+
///
46+
/// Callback returns UUID when Mindbox SDK is initialized. See also [init].
47+
void getDeviceUUID(Function(String uuid) callback) {
48+
MindboxPlatform.instance.getDeviceUUID(callback: callback);
49+
}
50+
51+
/// Method to obtain token.
52+
///
53+
/// Callback returns token when Mindbox SDK is initialized. See also [init].
54+
void getToken(Function(String token) callback) {
55+
MindboxPlatform.instance.getToken(callback: callback);
56+
}
57+
58+
/// Method for handling push-notification click.
59+
///
60+
/// Returns link from push-notification to callback.
61+
void onPushClickReceived(Function(String link) callback) {
62+
MindboxPlatform.instance.onPushClickReceived(callback: callback);
63+
}
4364
}

0 commit comments

Comments
 (0)